class DefinedOr[T] {
var _v:Option[T] = None
def this(n:T) = { this(); this.v = n }
def v:Option[T] = _v
def v_=(v:T) = { _v = Some(v) }
def ||=(n:T) = { v = v match { case None => n; case Some(x) => x } }
}
object Main {
def main(args:Array[String]) = {
var d:DefinedOr[Int] = new DefinedOr
println(d.v)
d ||= 0
println(d.v)
d ||= 1
println(d.v)
d = new DefinedOr(2)
println(d.v)
d ||= 0
println(d.v)
}
}
lunlumo #7697() [ Scala ] Rating0/0=0.00
scalaの場合変数宣言時に値を設定する必要があるので,未初期化時に値を設定するやり方は用意されていません。Option型は用意されているので,Noneが設定されている場合に限り値を設定する処理を参考までに挙げておきます。
class DefinedOr[T] { var _v:Option[T] = None def this(n:T) = { this(); this.v = n } def v:Option[T] = _v def v_=(v:T) = { _v = Some(v) } def ||=(n:T) = { v = v match { case None => n; case Some(x) => x } } } object Main { def main(args:Array[String]) = { var d:DefinedOr[Int] = new DefinedOr println(d.v) d ||= 0 println(d.v) d ||= 1 println(d.v) d = new DefinedOr(2) println(d.v) d ||= 0 println(d.v) } }Rating0/0=0.00-0+
[ reply ]