Подчеркивает числовые литералы в scala
По-видимому, scala не поддерживает jdk7 и более поздние символы подчеркивания в числовых литералах?
Я использую jdk 8
scala> System.getProperty("java.version")
res0: String = 1.8.0_40
Здесь мы пытаемся использовать числовой литерал jdk7 (и более поздний):
scala> val x = 1_000_000
<console>:1: error: Invalid literal number
val x = 1_000_000
^
Есть ли опция scala language для этого?
Ответы
Ответ 1
В области Scala вы, возможно, видели такие вещи, как:
s"My name is $firstName"
и
sql"select id, name from members where id = ${id}"
Нет причин не иметь:
i"1 000 000"
или даже:
animal"Dog" // checks that Dog is on the list of animal words
В библиотеке Scala нет встроенной интерполяции i
, но вы можете использовать:
implicit class IntContext(val sc: StringContext) {
def i(args: Any*): Int = {
val orig = sc.s(args: _*)
orig.replace(" ", "").toInt
}
}
i"1 000 000" // res0: Int = 1000000
Ответ 2
Обратите внимание, что начиная с Scala 2.13
, подчеркивание принимается как числовой разделитель букв:
val x = 1_000_000
// x: Int = 1000000
val pi = 3_14e-0_2
// pi: Double = 3.14