18

"?" を含む scala コードに遭遇しました。しかし、scalaでそれが何を意味するのかわかりません。誰か私に説明してもらえますか? ありがとう。

そして、ここに1つの例があります

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

2 に答える 2

30

私にとっては、Option の apply メソッドのように見えます。コードのどこかに次のインポート ステートメントがありますか。

import Option.{apply => ?}

これは、applyが?としてインポートされることを意味します。. Option.apply のドキュメントから:

引数が null でない場合は Some(x) を作成し、null の
場合は None を作成する Option ファクトリ。

ステートメント全体は、次のことを意味します。

conf.get("scoobi.jobid") が null に等しくない場合は、この文字列を割り当てます。それ以外の場合は、文字列 sys.error("Scoobi job id not set.") を割り当てます。

于 2012-04-06T08:29:02.277 に答える
8

「abcd...」のように、ただの法的な文字です。

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

scala> val a_? = ?(3)
a_?: Boolean = true

UPD: Scala 、Scala メソッド、および値の名前で有効な識別子文字を参照してください

UPD2:例では「?」関数、メソッド、thisまたはメソッドを持つオブジェクトのいずれかapplyです。おそらく返されますOption[String]

于 2012-04-06T07:01:40.403 に答える