我用“?”遇到一些scala代码但是不知道斯卡拉是什么意思,有人能解释一下吗?感谢。
这是一个例子
def getJobId(conf: Configuration): String =
?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))
答案 0 :(得分:27)
对我来说,它看起来像Option的apply方法。代码中是否存在以下import语句:
import Option.{apply => ?}
这意味着应用导入?。来自Option.apply的文档:
如果参数不为null,则创建Some(x)的Option工厂,
如果它为null,则为None。
整个陈述的意思是:
如果conf.get(“scoobi.jobid”)不等于null,则指定此字符串, 否则分配字符串sys.error(“Scoobi job id not set。”) 返回
答案 1 :(得分:7)
这只是一个法律角色,就像“abcd ......”
scala> def ?(i: Int) = i > 2
$qmark: (i: Int)Boolean
scala> val a_? = ?(3)
a_?: Boolean = true
UPD:请参阅Valid identifier characters in Scala,Scala method and values names
UPD2:在示例“?”中可以是this
的函数,方法,也可以是apply
方法的某个对象。它可能会返回Option[String]
。