在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