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

zjf*_*fdu 17 syntax scala

我用"?"遇到一些scala代码 但是不知道斯卡拉是什么意思,任何人都可以向我解释一下吗?谢谢.

这是一个例子

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

Chr*_*ian 29

对我来说,它看起来像Option的apply方法.代码中是否存在以下import语句:

import Option.{apply => ?}
Run Code Online (Sandbox Code Playgroud)

这意味着申请被导入为.来自Option.apply的文档:

Option参数工厂,如果参数不为null,则创建Some(x);如果为null,则创建
None.

整个陈述意味着:

如果conf.get("scoobi.jobid")不等于null,则赋值此字符串,否则分配字符串sys.error("Scoobi job id not set.")返回


sen*_*nia 7

它只是一个合法的角色,就像"abcd ......"

scala> def ?(i: Int) = i > 2
$qmark: (i: Int)Boolean

scala> val a_? = ?(3)
a_?: Boolean = true
Run Code Online (Sandbox Code Playgroud)

UPD:请参阅Scala中的有效标识符字符,Scala方法和值名称

UPD2:在示例中"?" 可能是方法的功能,方法this或只是一些对象apply.它可能会回来Option[String].