我遇到了一些带有“?”的scala代码 但不知道在scala中是什么意思,谁能给我解释一下?谢谢。
这是一个例子
def getJobId(conf: Configuration): String =
?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))
对我来说,它看起来像 Option 的 apply 方法。代码中是否有以下导入语句:
import Option.{apply => ?}
这意味着apply被导入为? . 来自 Option.apply 的文档:
一个选项工厂,如果参数不为空,则创建 Some(x),如果为空,则创建
None。
整个陈述意味着:
如果 conf.get("scoobi.jobid") 不等于 null,则分配此字符串,否则分配字符串 sys.error("Scoobi job id not set.") 返回
它只是一个合法字符,就像“abcd...”
scala> def ?(i: Int) = i > 2
$qmark: (i: Int)Boolean
scala> val a_? = ?(3)
a_?: Boolean = true
UPD:请参阅Scala 中的有效标识符字符、Scala 方法和值名称
UPD2:在示例中“?” 可以是函数、方法this
或只是一些带有apply
方法的对象。它可能会返回Option[String]
。