Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在Scala中声明一个对象并稍后对其进行初始化_Scala - Fatal编程技术网

是否可以在Scala中声明一个对象并稍后对其进行初始化

是否可以在Scala中声明一个对象并稍后对其进行初始化,scala,Scala,刚开始使用Scala进行单元测试,有一个基本问题 class Test { ClassToBeTested testObject; @Before void initializeConstructor() { testObject = new ClassToBeTested(//Blah parameters); } @Test //Blah } 上面的Java示例表明,我可以声明一个类型为ClassToBeTested的对象,然后对其进行初始化。这可以在S

刚开始使用Scala进行单元测试,有一个基本问题

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查看我的更新。您只能对类成员使用它,但不能对局部变量使用它-它们应该始终进行初始化。