Что значит "?" символ (знак вопроса) означает Scala?

Я встречаю код scala с символом "?" но не знаю, что это значит в scala, может ли кто-нибудь объяснить это мне? Спасибо.

И вот один пример

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

Ответ 1

Для меня это выглядит как применить метод Option. Есть ли в коде следующий оператор импорта:

import Option.{apply => ?}

Это означает, что применить импортируется как ?. Из документа Option.apply:

Опция factory, которая создает Some (x), если аргумент не является нулевым,
и None, если оно равно null.

Вся инструкция означает:

если conf.get( "scoobi.jobid" ) не равно null, назначьте эту строку, в противном случае назначьте строку sys.error( "Идентификатор задания Scoobi не установлен" ). возвращает

Ответ 2

Это просто юридический характер, как "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].