Что значит "?" символ (знак вопроса) означает 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]
.