是否可以在Scala中声明一个对象并稍后对其进行初始化
刚开始使用Scala进行单元测试,有一个基本问题是否可以在Scala中声明一个对象并稍后对其进行初始化,scala,Scala,刚开始使用Scala进行单元测试,有一个基本问题 class Test { ClassToBeTested testObject; @Before void initializeConstructor() { testObject = new ClassToBeTested(//Blah parameters); } @Test //Blah } 上面的Java示例表明,我可以声明一个类型为ClassToBeTested的对象,然后对其进行初始化。这可以在S
class Test {
ClassToBeTested testObject;
@Before
void initializeConstructor() {
testObject = new ClassToBeTested(//Blah parameters);
}
@Test
//Blah
}
上面的Java示例表明,我可以声明一个类型为ClassToBeTested
的对象,然后对其进行初始化。这可以在Scala中完成吗?我试过了
class Test {
var testObject = new ClassToBeTested()
@Before def initializeConstructor() {
//I do not know how to proceed here!!!!!!
}
@Test def testOne() {
//Some test
}
}
我不想在
testOne()
中做任何事情,因为我想在不同的测试中使用该对象。构造函数的参数是mock,在JUnit
中,我知道如果我在之前全局初始化对象,而不是在@内部初始化对象,mock不会初始化
class Test {
var testObject: ClassToBeTested = _
@Before
def initializeConstructor() {
testObject = new ClassToBeTested()
}
@Test
def testOne() {
//Some test
}
}
在下划线init上
您还可以在Scala书籍中的编程部分中阅读更多关于这方面的内容。以下是对您有帮助的报价:
更准确地说,一个字段的初始值设定项“=”为该字段指定一个零值。零值取决于字段的类型。数值类型为0,布尔值为false,引用类型为null。这与Java中定义的同一变量没有初始值设定项是一样的
请注意,您不能简单地在Scala中取消“=389;”初始值设定项。如果你写过:
var celsius: Float
这将声明一个抽象变量,而不是未初始化的变量
我认为scala无法在您通过放置下划线将变量初始化为默认值时推断类型。谢谢!!那么这也可以用于正态变量吗?比如说,var temp=\uu
并在类中的任何位置使用此变量?@noMAD查看我的更新。您只能对类成员使用它,但不能对局部变量使用它-它们应该始终进行初始化。