【发布时间】:2012-04-19 21:04:18
【问题描述】:
我遇到了一些带有“?”的scala代码但不知道在scala中是什么意思,谁能给我解释一下?谢谢。
这是一个例子
def getJobId(conf: Configuration): String =
?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))
【问题讨论】:
-
你能举个例子吗?这 ”?”可以是方法名、类名或其他名称的一部分。它不是 Scala 中的标准运算符。
-
val lovely_? = isItAGoodDay() -
是我还是“?”在这种情况下,辅助方法完全没有意义吗?使用标准 conf.get("foo") getOrElse sys.error("bar") 获得相同的结果,字符更少,恕我直言,更清晰
-
@virtualeyes
Option.apply(x)将null转换为None。因此,如果conf.get("foo")没有返回Option,但可能返回null,那么这样做是为了将可能的null转换为None(参见Christian 的回答)。 -
假设在这种情况下 get 是在一个选项上,但再看一遍,情况并非如此。顺便说一句,“import Option.{apply => ?}”真的很棒;-)