一次初始化多个对象

时间:2016-10-23 03:06:34

标签: scala

我有一个名为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的重新分配,这是有道理的。我怎样才能一次初始化它们?

2 个答案:

答案 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)