2

Scala での浮動小数点リテラルの定義は次のとおりです。

floatingPointLiteral  ::=  digit {digit} ‘.’ digit {digit} [exponentPart] [floatType]
                        |  ‘.’ digit {digit} [exponentPart] [floatType]
                        |  digit {digit} exponentPart [floatType]
                        |  digit {digit} [exponentPart] floatType
exponentPart          ::=  (‘E’ | ‘e’) [‘+’ | ‘-’] digit {digit}
floatType             ::=  ‘F’ | ‘f’ | ‘D’ | ‘d’

ドットで始まる浮動小数点リテラルを入力しようとすると、エラーが発生します。

scala> .123
        ^
   error: ';' expected but double literal found.

そのようなリテラルをいくつかの変数に割り当てる場合、すべて問題ありません

scala> val x = .123
x: Double = 0.123

なぜそのように振る舞うのですか?

4

1 に答える 1