2
以下代碼是否模擬F#中的受保護變量和公共變量之間的區別?或者我錯過了什麼?受保護/公共變量與Vs. F#中的閉包#
let (=?) (d:Dictionary<'a,'b>) (x:'a) = d.TryGetValue(x)
let psi (f:'a -> 'b) (d:Dictionary<'a,'b>) = // public dictionary
let lambda (x:'a) =
match (d =? x) with
| true, i -> i
| false, _ -> d.Add(x,f x)
f x
lambda
let mem (f:'a -> 'b) = // protected dictionary
let d = new Dictionary<'a,'b>()
let orize (input:'a) =
match (d =? input) with
| true, i -> i
| false, _ -> d.Add(input,f input)
f input
orize
說明性會很好。
但這不是保護與公共變量完全相同的東西嗎? 這些是修改範圍的形容詞。而且,根據理論,我必須能夠用F#模擬所有C#,反之亦然......所以如果這不能說明公共和受保護之間的區別,那麼會發生什麼呢? – cdonlan 2012-02-29 15:12:20
是「模塊」本質上是「讓」的另一個詞,除了這一次,「模塊」級別的每個元素是公開的而不是私人的? – cdonlan 2012-02-29 15:16:14
在訪問修飾符方面,您的示例更接近'public/private'值。這些關鍵字[在F#中可用](http://msdn.microsoft.com/zh-cn/library/dd233188.aspx)。受保護的關鍵字與繼承有關,這是另一回事。 – pad 2012-02-29 15:18:28