自动将变量转换为Scala中的Options

时间:2014-02-26 05:29:23

标签: scala intellij-idea

这组变量很方便..

var lastName: String = _
var address: Address = _

但它将它们设置为null - scala中的一个大禁忌..

下面这部分是scala惯用的..

var lastName = None: Option[String]
var address = None: Option[Address]

但是额外的打字不是最佳的。

选项的任何自动化 - 以充分利用这两种情况?

2 个答案:

答案 0 :(得分:4)

这会让你感觉更好吗?

var lastName: Option[String] = None
var address: Option[Address] = None

object none {
  def apply[T]: Option[T] = None
}
var lastName = none[String]
var address = none[Address]

答案 1 :(得分:3)

您可以使用scalaz中的none方法:

import scalaz.std.option.none

var lastName = none[String]
var address = none[Address]

如果您不想使用scalaz

,您可以自己编写此类方法
def none[T]: Option[T] = None

some中还有方法scalaz,返回Option

import scalaz.syntax.std.option._

1.some
// res0: Option[Int] = Some(1)

作为Régis Jean-Gilles noted,还有Option.empty。您可以直接使用它:

var address = Option.empty[Address]

或导入它并使用上面的none

import Option.{empty => none}

var address = none[Address]