【发布时间】:2020-10-11 19:17:27
【问题描述】:
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
为什么会这样?
【问题讨论】:
-
为什么需要在 Scala 控制台中写入任意数字而无需任何赋值或返回?这个数字是没有办法的。
-
或者使用 ammonite,这比 vanilla REPL 更好的 Scala REPL。它正确处理了这种情况。
-
你也想要
digit {digit} ‘.’ [exponentPart] [floatType]吗?不允许使用“123.e45”吗?
标签: scala floating-point literals read-eval-print-loop scala-repl