在我們可以在f#中創建類的方法中存在這種二分法,這真令我困擾。我可以使用隱式格式或顯式格式創建類。但是我想要的某些功能只能用於隱式格式,有些功能只能用於顯式格式。關於F#面向對象編程
例如:
我不能使用
let inline
*(或單獨let
)顯式定義的類中。在隱式定義的類中定義不可變的public字段(不屬性*)的唯一方法是
val bla : bla
語法。但這裏有一個冗餘。因爲我最終會得到兩個相同的不可變數據副本,一個是私有的,一個是公共的(因爲在隱式模式下構造器參數在整個類存在中都存在)
(不太相關)需要使用屬性對於方法重載和字段的默認值是相當不合適的。
無論如何我可以解決這個問題嗎?
*出於性能方面的
編輯:原來我錯了約兩個點(感謝加內什·錫坦帕勒姆& MichaelGG)。
雖然我不能在這兩個隱含&明確的類定義使用
let inline
,我可以用member inline
就好了,我以爲做同樣的事情。顯然最新的F#不再有任何冗餘,因爲在類體中沒有使用的任何參數都是構造函數的本地對象。
Will be gone在下一個F#版本。
「出於性能原因」?不能說我喜歡那種聲音;) – Juliet 2009-08-01 00:44:57
它主要是與圖形編程相關的數字處理。請參閱:http://blogs.msdn.com/ricom/archive/2006/09/07/745085.aspx。 – 2009-08-01 20:38:37