2016-05-26 27 views
0

我该如何初始化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) 
+1

你的问题是什么?您已经定义了一个类和一个额外的构造函数。你还想要什么? –

+0

如何初始化Set [String]?据我所知Scala中没有“null”。 –

+0

是的,在Scala中有'null',并且你的代码是完整的(也就是说,如果你在类Plopp(...){/ * HERE * /}内粘贴'def this(..)'' –

回答

2

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

谢谢男人,我想我明白了! –