具有以下内容:
let a = "hello world".Split(' ')
返回类型是一个字符串数组,但类型写为:System.String[]
我不明白为什么:
[| ... |]
声明一个数组但它显示为 [ ... ]
在类型 [ ... ]
声明一个列表但它显示为 x list
在类型 另一个例子:
([| 3 |]).GetType()
val it : System.Type =
System.Int32[]
为什么会这样?
最佳答案
这种不一致可能是因为 F# 是一种 .NET 语言。
[ ... ]
是有意义的。用于列表和更长的语法 [| ... |]
对于数组。System.Int32[]
.这是你从 GetType
得到的并且 F# 无法覆盖它,因为它来自 .NET 库。'a list
和 'a array
如果你想明确地写类型。int[]
在 F# 中也是如此。我同意这令人困惑。我认为 F# 在这里只是采用了 C# 中使用的符号。但是,请注意,这也使您可以轻松定义多维数组,例如 int[,]
和 int[,,]
.我认为多维数组类型没有其他语法。关于f# - 为什么在 F# 中将数组类型写成一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66539002/