我收到错误"非法启动简单表达"在尝试这样做时scala:
def test() = {
val h = "ls"!
if (h != 0)
println("error")
}
这是错误
[error] if (h != 0)
[error] one error found
[error] (compile:compileIncremental) Compilation failed
谁能告诉我我做错了什么?
答案 0 :(得分:1)
Scala编译器在这里感到困惑,因为您将!
称为后缀运算符。它无法确定使用哪个版本以及隐含分号的位置。您可以添加这样的分号:
def test() = {
val h = "ls"!;
if (h != 0)
println("error")
}
或将其称为方法:
def test() = {
val h = "ls".!
if (h != 0)
println("error")
}
或添加新行:
def test() = {
val h = "ls"!
if (h != 0)
println("error")
}
答案 1 :(得分:0)
使用后缀运算符的最佳做法是使用点.
运算符。您应该像val h = "ls".!
由于分号在Scala中是可选的,并且编译器可能将其视为中缀表示法,因此它使代码不那么模糊。
来自 Scala doc:
此样式不安全,不应使用。因为分号是 可选,编译器将尝试将其视为中缀方法if 它可以,可能从下一行开始学习。
如需完整参考,请参阅以下链接:Suffix Notation。这篇文章也可能有用Scala's "postfix ops"。