我最初認爲「as」和冒號操作符意味着完全相同的事情,爲一個值或函數指定一個類型。但我實際上發現不一致:「as」和冒號指定類型之間的區別?
type Uppercase = string -> string
let uppercase:Uppercase = fun n ->
//code
這工作正常。但是,如果我改變冒號爲「as」
type Uppercase = string -> string
let uppercase as Uppercase = fun n ->
//code
它打破了,說它不知道什麼類型「n」是。當然,我可以通過這樣做來解決這個問題
type Uppercase = string -> string
let uppercase as Uppercase = fun (n:string) ->
//code
它又開心了。所以,我的問題是,爲什麼「as」與冒號不同?爲什麼F#在使用「as」時無法進行類型推斷?謝謝。
關鍵字'as'與C#中的關鍵字不同。它與F#中的類型無關。它用於將表達式綁定爲單個值,在使用歧視聯合時非常有用。 – Gustavo