我有一个名为Mark的Type,并且有4个变量初始化为null。它们被声明为:
var markA: Mark = _
var markB: Mark = _
var markC: Mark = _
var markD: Mark = _
目前,我正在使用方法初始化它们:
markA = new Mark()
markB = new Mark()
markC = new Mark()
markD = new Mark()
在没有反复写“= new Mark()”的情况下,将它们全部初始化的正确方法是什么?我试图在方法
中做类似下面的事情List(markA,markB,marcC,mardD).foreach(_ = new Mark())
但编译器警告我,这是对val的重新分配,这是有道理的。我怎样才能一次初始化它们?
答案 0 :(得分:1)
var markA, markB, markC, MarkD = new Mark()
将为每个人分配一个新的Mark实例。 例如。 with mutable.Map
scala> var a,b,c = collection.mutable.Map("a"->1)
a: scala.collection.mutable.Map[String,Int] = Map(a -> 1)
b: scala.collection.mutable.Map[String,Int] = Map(a -> 1)
c: scala.collection.mutable.Map[String,Int] = Map(a -> 1)
scala> a += ("b"->1)
res1: scala.collection.mutable.Map[String,Int] = Map(b -> 1, a -> 1)
scala> a
res2: scala.collection.mutable.Map[String,Int] = Map(b -> 1, a -> 1)
scala> b
res3: scala.collection.mutable.Map[String,Int] = Map(a -> 1)
scala> c
res4: scala.collection.mutable.Map[String,Int] = Map(a -> 1)
答案 1 :(得分:1)
如果可以将变量存储在List / Array中,则可以将声明和初始化分为两个阶段:
声明:
var marks = Array.fill[Mark](4)(null)
初始化:
marks = marks map (x => new Mark)