我正在阅读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