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
なぜそのように振る舞うのですか?