我在这里和网上搜索但没有回答。
我问的原因是,由于F#约定似乎有利于非大写字母,因此使用带有Pascal约定的BCL类型在F#中看起来很奇怪,如:
let stringD = String.Join(" ",[| stringA; stringB |])
似乎更符合F#的精神:
let stringD = string.join(" ",[| stringA; stringB |])
答案 0 :(得分:8)
好的,有些事情。
首先,F#区分大小写。
其次,命名的F#约定在F# Component Design Guidelines 中描述。简而言之,F#模块中的let-bound成员使用camelCase,但所有.NET OO构造都使用PascalCase。整个F#库都是如此。
最后,在F#中string
不是关键字,而是type abbreviation(System.String
)的名称和function的名称(转换为字符串)。在string.Join
的表达式上下文中,函数名称优先,这就是string.Join
不起作用的原因。由于区分大小写,System.String.join
永远不会起作用(除非您添加了扩展成员)。
答案 1 :(得分:2)
是的,F#是区分大小写的
let stringD = string.join(" ",[| stringA; stringB |])
不行。
答案 2 :(得分:1)
令人惊讶的是,the F# Language Specification没有明确提到区分大小写,但确实提到使用不同的大写字母用于内在函数/语言和用户定义的类型参数(5.1.2)
虽然我对F#的体验有限(超出Hello World风格的应用程序),但我认为string.join
不会绑定到String.Join
。