簡體   English   中英

F#語法解釋(^)

[英]F# syntax explanation (^)

好吧,抱歉糟糕的頭銜。

考慮以下功能:

let inline getName arg =
    ( ^a : (member Name : string) arg)

我知道它的作用,但我知道這只是因為我復制粘貼它。

它說:給予arg返回name成員arg

但是我沒有得到第一部分^a ,也沒有得到: (member Name : string)

我所知道的是,最后一個arg正在應用^a : (member Name : string)函數的arg值。

^用於指定類型參數是靜態解析的 ,這意味着類型將在編譯時解析,而不是在運行時解析。

第二部分是一個通用約束 ,它指定該類型必須具有名為Name的成員,該成員具有給定簽名,在本例中為字符串屬性。 您顯示的語法是如何實際調用該成員,並且編譯器正在推斷該函數的泛型約束,但您也可以明確指定約束,盡管不需要。

let inline getName (arg : ^a when ^a : (member Name : string)) =
    ( ^a : (member Name : string) arg)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM