我遇到一些帶「?」的scala代碼但不知道scala中的含義,有誰能解釋一下嗎?謝謝。什麼是「?」符號(問號)是否意味着在斯卡拉?
下面是一個例子
def getJobId(conf: Configuration): String =
?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))
我遇到一些帶「?」的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未設置「) 返回
謝謝,你說得對。前面有一個導入聲明「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