什么是“?”符号(问号)是否意味着在斯卡拉?

问题描述:

我遇到一些带“?”的scala代码但不知道scala中的含义,有谁能解释一下吗?谢谢。什么是“?”符号(问号)是否意味着在斯卡拉?

下面是一个例子

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

你能举个例子吗? “?”可以是方法名称,类名称或其他内容的一部分。它不是Scala中的标准操作符。 – Jesper 2012-04-06 06:58:32

+0

'val lovely_? = isItAGoodDay()' 2012-04-06 07:01:03

+0

只是我还是“?”这种情况下的帮助方法完全没有意义?使用标准conf.get(“foo”)getOrElse sys.error(“bar”)获得相同的结果,使用更少的字符和恕我直言,更清晰, – virtualeyes 2012-04-06 09:42:07

对我来说,它看起来像Option的apply方法。有没有什么地方在代码中下面的import语句:

import Option.{apply => ?} 

这意味着适用导入为。从Option.apply的DOC:

一个选项的工厂,产生了一些(x)如果该参数不为null,
和无,如果它是空的。

整个声明则表示:

如果conf.get( “scoobi.jobid”)不等于空,指定这个字符串, 以其他方式转让该字符串sys.error(“Scoobi工作ID未设置“) 返回

+1

谢谢,你说得对。前面有一个导入声明“import Option。{apply =>?}” – zjffdu 2012-04-06 08:39:54

这只是一个合法的字符,就像 “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]