F#中的Int和String

13

我有一个 F# 函数,它以 int 值作为参数,并将该值作为 string 返回。

let inttostring (x:int):string = 
    ""+x

我无法让ToString正常工作。如有帮助将不胜感激。


这个不行吗?let inttostring (i: int): string = i.ToString() - Lee
1
投票关闭。如果你不知道 F# 是强类型的还是关于 object.ToString,那么现在是阅读文档的时候了。 - Daniel
3
重点不是强类型。C# 是强类型语言,但它有隐式转换,所以你可以把整数加到字符串上。尽管这不是我在 C# 中首选的方法,但它仍然可以编译通过。如果有人不知道 F# 不支持隐式转换,我不认为这必须要 RTFM(阅读说明手册)才能理解。 - Joel Mueller
2
@JoelMueller:如果他想知道为什么这不起作用,或者为什么F#没有像C#那样的隐式转换,那么这些都是合理的问题。问题在于他说他无法将int转换为string,这表明他甚至没有进行过初步的搜索。 - Daniel
1个回答

27

空字符串""int类型的变量x不兼容。您可以使用

let int2String x = sprintf "%i" x
或者
let int2String (x: int) = string x

7
"...或者 i.ToString() 或者 Convert.ToString(i) 或者 String.Concat("", i)..." 的意思是使用这些方法之一将变量 i 转换为字符串。 - Daniel
2
可能值得一提的是,对于刚加入 F# 的新成员来说,类型可以隐式地相互转换(这也是上面 "pad" 所说的)。您需要显式地从一种类型转换为另一种类型,以使代码编译通过。 - Chris
6
@Chris: 我相信你的意思是“不是”。 - Daniel
5
@Daniel:非常抱歉,你是完全正确的。F# 类型 不会 像其他语言(比如 C#)那样隐式转换。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接