我的一个scala类中有一个变量,其值仅在调用特定方法时第一次设置.方法参数值将是字段的初始值.所以我有这个:
classX {
private var value: Int= _
private var initialised = false
def f(param: Int) {
if (!initialised){
value = param
initialised = true
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更像scala的方式来做到这一点?选项似乎有点太麻烦......
Bri*_*ian 15
实际上使用Option不那么麻烦,因为是否value已经初始化的问题可以从Some或None在中的值推断Option.这比使用标志更加惯用Scala.
class X() {
var value: Option[Int] = None
def f(param: Int) {
value match{
case None => value = Some(param)
case Some(s) => println("Value already initialized with: " + s)
}
}
}
scala> val x = new X
x: X = X@6185167b
scala> x.f(0)
scala> x.value
res1: Option[Int] = Some(0)
scala> x.f(0)
Value already initialized with: 0
Run Code Online (Sandbox Code Playgroud)