F#アプリケーションの開発では、タイプがLazy<'T>
であるタイプがあります。F#プロパティとC#プロパティの比較
明らかに、F#はプロパティの構文糖を処理する方法の一つの興味深い副作用は(しゃれを許し)(C#の方法とは対照的に)プロパティのゲッターとセッターは、異なるを受け入れる/返すことができるということですタイプ。
let lazyValue = lazy 0
member this.Value
with get() =
lazyValue.Value
and set _lazyVal =
lazyValue <- _lazyVal
...ような値:(。私はこの観察を活用するコードを記述するとVisual Studioが文句を言っていない。少なくとも、)
をたとえば、私はこれを行うためには、それが有利です。 は、int
を返しますが、はのみを受け取ります。Lazy<int>
です。
このようにして、理論的、慣用的、そして実用的な異論があります。 F#snobが彼の鼻を上げてくれる何か?この(オブジェクト指向の実装)が明らかに違反しているいくつかの機能プログラミング規則がありますか?これは、大規模アプリケーションで問題を引き起こすことが実証されているアプローチですか?もしそうなら、なぜ/どのように?
これはF#コンパイラのバグです.F#仕様では違法と言われています。 F#の将来のバージョンではこれが機能しなくなることを期待してください。 : - ] – ildjarn