2011-05-04 47 views
1

假设将被以下述类型没有做进一步的修改或添加,它有什么优势从的少打字和更好的可读性和效率这样做的一种方式相对于另一个(开第二个例子)?F#:闭包与私有值

type MyType<'T> (_initVal : 'T) = 
     let getSetFns() = 
      let value = ref _initVal 
      (fun() -> value.Value), (fun _value -> value := _value) 
     let getVal, setVal = getSetFns() 
     member this.Value with get() = getVal() and set _value = setVal _value 

......或者......

type MyType<'T> (_initVal : 'T) = 
     let value = ref _initVal 
     member this.Value with get() = value.Value and set _value = value := _value 

回答

5

第二个是短,所以我会去试试。你可能要考虑使用let mutable,而不是一个参考单元,这将是稍微更高性能的(尽管它不太可能你会发现太大的差别)。

为了让多一点背景下,使用闭隐藏价值,因为你在第一种情况下做的,是一个很好的技术,但这里的价值已经隐藏,何必再隐瞒呢?

+0

感谢,皮克林先生! – MiloDC 2011-05-04 12:04:16