Scala类中的集合
问题描述:
我该如何初始化Scala类中的集合,比如“null”? 例如Scala类中的集合
class Plopp(val name: String, var multiline: mutable.Set[String])
在那类我想定义就像
def this(name: String) = this(name, null)
的aditional的构造器我到处看那里只是简单类型(如String)的例子,诠释麻生太郎。由于答案
更新:
class Plopp(val name: String, var multiline: Option[Set[String]] = None)
答
Scala的继承null
从Java,所以你基本上可以写你在你的问题做了什么:
import scala.collection.mutable
class Plopp(val name: String, var multiline: mutable.Set[String]) {
def this(name: String) = this(name,null)
}
这是否有道理是一个不同的问题:
- 您正在使用
var
作为可变集合。您可能希望在此处使用val
(因为您在变更集合),或者更改为不可变集合 - 您应该在Scala中避免
null
。信号可选值有更好的抽象,特别是Option
。 - 也许你也可以在这里找到一个合理的其他值来代替
null
,例如空集合。 - 重写方法和构造函数通常被认为是不好的风格。请注意,您也可以使用默认值。这是一个建议:
case class Plopp(name: String, multiline: Set[String] = Set.empty)
(暗示collection.immutable.Set
)。
+0
谢谢男人,我想我明白了! –
你的问题是什么?您已经定义了一个类和一个额外的构造函数。你还想要什么? –
如何初始化Set [String]?据我所知Scala中没有“null”。 –
是的,在Scala中有'null',并且你的代码是完整的(也就是说,如果你在类Plopp(...){/ * HERE * /}内粘贴'def this(..)'' –