5
在開發F#應用程序時,我有一個包含類型爲Lazy<'T>
的屬性的類型。F#屬性與C#屬性的對比
顯然,一個有趣的副作用(原諒雙關語)的該F#處理性質(而不是在C#方式)的語法糖的方法是一個屬性的獲取和設置可以返回/接受不同類型。 (至少,Visual Studio是不是我寫的代碼,它利用這種觀察的優勢抱怨)
例如,有利的是,我做這件事:
let lazyValue = lazy 0
member this.Value
with get() =
lazyValue.Value
and set _lazyVal =
lazyValue <- _lazyVal
...這樣的價值返回和int
,但是接受只有一個Lazy<int>
。
我想知道的是這樣做的理論,慣用和實際的反對意見。這是F#勢利鼻涕會變成什麼樣子?這個(面向對象的實現)顯然違反了一些函數式編程經驗法則嗎?這是一種已被證明會在大規模應用中導致問題的方法嗎?如果是這樣,爲什麼/如何?
這是允許的,是F#編譯器中的一個錯誤 - F#規範說它是非法的。預計這將不再適用於未來版本的F#。 : - ] – ildjarn