scala sys.process_非法启动简单表达式错误

时间:2016-04-08 04:03:00

标签: scala

我收到错误"非法启动简单表达"在尝试这样做时scala:

def test() = {
    val h = "ls"!
    if (h != 0)
        println("error")

}

这是错误

[error]         if (h != 0)
[error] one error found
[error] (compile:compileIncremental) Compilation failed

谁能告诉我我做错了什么?

2 个答案:

答案 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"