Подчеркивает числовые литералы в 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