2010-09-17 60 views
5

我在這裏和網上搜索,但沒有答案。F#區分大小寫嗎?

我想問的原因是,因爲F#約定好像他們青睞noncapital字母,使用的BCL與帕斯卡爾慣例看在F#怪異,如:

let stringD = String.Join(" ",[| stringA; stringB |]) 

好像它會更精神的F#這樣的:

let stringD = string.join(" ",[| stringA; stringB |]) 

回答

8

好吧,幾件事。

首先,F#區分大小寫。

其次,命名的F#約定在F# Component Design Guidelines 中描述。簡而言之,F#模塊中的綁定成員使用camelCase,但所有.NET OO構造都使用PascalCase。在整個F#庫中都是如此。

最後,在F#string不是一個關鍵字,而它是一個type abbreviation(爲System.String)的名稱和一個function的名稱(轉換爲字符串)。在string.Join的表達式上下文中,函數名稱優先,這就是string.Join不起作用的原因。由於區分大小寫,System.String.join將永遠不會工作(除非例如您添加了擴展成員)。

+0

謝謝你驚人的答案。看起來像我會問你很多F#的問題,如果你不介意的話:O – 2010-09-18 07:21:14

+0

該死的我要去學習F#但我不會因爲這個... – beppe9000 2016-03-09 22:56:22

1

令人驚訝地,the F# Language Specification沒有明確提到的情況下,靈敏度,但指的是使用不同的外套內在/語言和用戶定義的類型的參數(5.1.2)

雖然我對F#的使用經驗有限(超出Hello World風格的應用程序),但我認爲string.join不會與String.Join綁定。

+0

好吧我可以理解Join中找不到字符串,但在C#中的字符串或字符串作品來訪問它的成員。爲什麼不在F#中工作?這是一些IDE背後隱藏的C#的魔力? – 2010-09-18 00:40:47

+3

在C#中,'string'是一個表示'System.String'的關鍵字。在F#中,'string'是函數的名稱以及類型別名,而不是關鍵字。 – Brian 2010-09-18 02:16:13

2

是,F#是區分大小寫的

let stringD = string.join(" ",[| stringA; stringB |]) 

將無法​​工作。