我有一個F#DLL和一個C#DLL。,綁定到一個來自c#庫的值
的C#庫有一個命名空間Library
與包含一個成員FUND_BITS
像這樣一類Toolbox
:
namespace Library {
public static class Toolbox {
public static uint FUND_BITS = 0;
}
}
,然後在F#庫我有一個綁定:
let bf = Library.Toolbox.FUND_BITS
現在,我在庫中定義的幾個函數中使用了bf
。當我更改FUND_BITS
的值時,我認爲所有的F#函數都會使用更新的值,因爲我綁定了bf
來引用Library.Toolbox.FUND_BITS
,並且沒有聲明它是可變副本或任何東西。但是,我發現這些函數使用FUND_BITS的陳舊值而不是更新後的值。
我誤解了F#如何創建不可變的綁定值?如果是這樣,我一直沒能找到在將與變化更新的方式結合的方式,例如:
let bf = &Library.Toolbox.FUND_BITS
'uint'是一個值類型;爲什麼它應該有引用語義? – ildjarn 2012-02-21 21:30:17
我想你想要一個別名,F#沒有的東西。 – Daniel 2012-02-21 21:43:54
@ildjarn我知道我可能不完全準確地理解函數式編程範例,但我希望在這種情況下,因爲我將'bf'綁定到非常量值類型,並且沒有指定任何可變賦值,那麼默認行爲將作爲參考;如果我想在特定的時間點將'bf'固定爲'FUND_BITS'的某個值,那麼我需要使用除了常規'let'語句之外的其他構造。 – mattgately 2012-02-22 16:58:41