我正在閱讀Tao Liu的「C#開發人員的F#」一書。在頁面139有一個觀察者模式的示例。我不確定微軟是否會或陶會允許我發佈完整列表。但這裏是我試圖包裹頭部的部分。需要幫助瞭解這裏正在做什麼
// subscribe to a notification function
member this.Subscribe notifyFunction =
let wrap f i = f i ; i
notify <- wrap notifyFunction >> notify
特別是let wrap f i = f i; i
我知道分號是下一條語句分隔,以便i
後存在本身分號是它的標誌是的返回值訂閱
它看起來像wrap是一個函數,它將f和i作爲參數f是一個接受一個參數的函數,並且在wrap的定義中,f以i作爲參數被調用。
在下一行換行提供了一個複合函數而不是兩個參數。
有人能幫我理解嗎?我看着它在FSI,我看到下面
val wrap : f:('a -> unit) -> i:'a -> 'a
這在我看來,wrap
有兩個論據之一是f
的功能,其中一個是從使用中推斷出一個類型,沒有返回值,第二個參數到wrap
是類型a本身,它再次根據用法推斷幷包裝返回類型a的值。
這一切的所有組合都把我扔了。有人能給我一個簡單的方法來理解這一點嗎?
你有相當挑剔的技能一路。你得到的通知聲明完全正確 – fahadash
不需要太多的技能......它都是在類型中;) – Carsten
你確定答案或有什麼你不明白? – Carsten