什么是"?"符号(问号)在Scala中意味着什么?

时间:2012-04-06 06:57:12

标签: scala syntax

我用“?”遇到一些scala代码但是不知道斯卡拉是什么意思,有人能解释一下吗?感谢。

这是一个例子

 def getJobId(conf: Configuration): String =
    ?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))

2 个答案:

答案 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 ScalaScala method and values names

UPD2:在示例“?”中可以是this的函数,方法,也可以是apply方法的某个对象。它可能会返回Option[String]