我在这里和网络上搜索了,但没有答案。
我提出这个问题的原因是,由于 F# 的惯例似乎偏向于小写字母,所以在 F# 中使用带有 Pascal 惯例的 BCL 类型看起来很奇怪,例如:
let stringD = String.Join(" ",[| stringA; stringB |])
似乎这样更符合 F# 的精神:
let stringD = string.join(" ",[| stringA; stringB |])
我在这里和网络上搜索了,但没有答案。
我提出这个问题的原因是,由于 F# 的惯例似乎偏向于小写字母,所以在 F# 中使用带有 Pascal 惯例的 BCL 类型看起来很奇怪,例如:
let stringD = String.Join(" ",[| stringA; stringB |])
let stringD = string.join(" ",[| stringA; stringB |])
好的,有几个事情需要注意。
首先,F# 是大小写敏感的。
其次,F# 命名约定在 F# 组件设计指南 中有描述。简单来说,在 F# 模块内部使用 camelCase 来绑定成员,但所有 .NET 的面向对象构造都使用 PascalCase。这一点适用于整个 F# 库。
最后,在 F# 中,string
不是关键字,而是一个 类型缩写(表示 System.String
)和一个 函数(将其转换为字符串)的名称。在 string.Join
的表达式上下文中,函数名称优先,这就是为什么 string.Join
无法正常工作的原因。并且由于大小写敏感性,System.String.join
也永远不会起作用(除非您添加了扩展成员)。
let stringD = string.join(" ",[| stringA; stringB |])
无法工作。
令人惊讶的是,F#语言规范并没有明确提到大小写敏感性,但是在intrinsics/language和用户定义的类型参数中使用不同的大小写(5.1.2)。
虽然我的F#经验有限(除了Hello World式的应用程序),我会认为string.join
不会绑定到String.Join
。