什么是“?”符号(问号)是否意味着在斯卡拉?
问题描述:
我遇到一些带“?”的scala代码但不知道scala中的含义,有谁能解释一下吗?谢谢。什么是“?”符号(问号)是否意味着在斯卡拉?
下面是一个例子
def getJobId(conf: Configuration): String =
?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))
答
对我来说,它看起来像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 Scala,Scala method and values names
UPD2 :在例子“?”可能是功能,方法this
或只是一些对象与apply
方法。它可能会返回Option[String]
。
你能举个例子吗? “?”可以是方法名称,类名称或其他内容的一部分。它不是Scala中的标准操作符。 – Jesper 2012-04-06 06:58:32
'val lovely_? = isItAGoodDay()' 2012-04-06 07:01:03
只是我还是“?”这种情况下的帮助方法完全没有意义?使用标准conf.get(“foo”)getOrElse sys.error(“bar”)获得相同的结果,使用更少的字符和恕我直言,更清晰, – virtualeyes 2012-04-06 09:42:07