在C#中,我可以声明未初始化的变量,然后在类的各种方法中将其分配给它们。例如,在NUnit测试中,我可以声明一个类型化的变量,该变量仅在设置方法中初始化,然后在各种测试中重复使用。
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 makeTestClass() =
MyTestClass()
// etc.
let ``First test``() =
let sut = makeTestClass()
sut.DoSomeWork()
let ``Second test``() =
let sut = makeTestClass()
sut.DoSomeWork()