具有以下内容:
let a = "hello world".Split(' ')
Run Code Online (Sandbox Code Playgroud)
返回类型是一个字符串数组,但类型写为:
System.String[]
我不明白为什么:
[| ... |]但它显示为[ ... ]类型[ ... ]但它显示为x list类型另一个例子:
([| 3 |]).GetType()
val it : System.Type =
System.Int32[]
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
这种不一致可能是因为 F# 是一种 .NET 语言。
在 F# 中,您希望列表比数组更频繁,因此[ ... ]对列表使用较短的语法而[| ... |]对数组使用较长的语法是有意义的。
在 .NET 中,数组类型被写为System.Int32[]. 这是您从中得到的,GetTypeF# 无法覆盖它,因为它来自 .NET 库。
对于类型名,你可以随时使用'a list和'a array如果你想明确写入类型。
最不一致的特性是您也可以编写数组类型,例如int[]在 F# 中。我同意这令人困惑。我认为 F# 在这里只是采用了 C# 中使用的符号。但是,请注意,这也使您可以轻松定义多维数组,例如int[,]和int[,,]。我认为多维数组类型没有其他语法。