在C#中,我可以聲明未初始化的變量,然後在該類的各種方法中分配該變量。例如,在NUnit測試中,我可以聲明一個類型化變量,它只能在安裝程序中初始化,然後在各種測試中重複使用。什麼是習慣性的F#相當於聲明一個變量以供將來在C#中使用
private MyTestClass sut;
public Setup()
{
sut = new MyTestClass();
etc.
}
public FirstTest()
{
sut.DoSomeWork(1);
}
public SecondTest()
{
sut.DoSomeWork(2);
}
我想在F#中做同樣的事情。然而根據this和其他人的說法,未分配的'變量'並不是F#中完成的事情。
在我的F#測試的情況下,測試不坐在任何類型,只是在一個模塊內,所以[<DefaultValue>] val
將無法正常工作。 使用mutable
只是覺得不對,因爲這似乎是F#編碼器最後選擇的選項。
由於idomatic F#不應該要求未賦值,因此解決此問題的「正確」方法是什麼?
'let sut = new MyTestClass()'有什麼問題? – s952163
爲什麼你需要這些變量?你有什麼理由不能在你使用它們的地方申報?在你的C#示例中,這兩個測試不能並行執行,你在腳下自己拍攝。 –
當然,我不應該在每次使用它的地方都聲明變量。如果每個測試需要一個相同初始化的類的實例,那麼該初始化應該在設置中。如果您有大量測試,並且每個測試需要對各種幫助類進行復雜初始化,您會做什麼?你不想在每次測試中都這樣做。你會堅持在每個測試初始化之前運行的助手,即安裝方法。我誤解了什麼? – FSharpOrBust