scala:错误:递归值需要类型

时间:2017-05-26 23:28:32

标签: scala recursion

我试图写一小段scala代码来理解无括号的方法和postfixOps。
这是我的代码:

import scala.language.postfixOps

object Parentheses {
    def main(args: Array[String]) {
        val person = new Person("Tom", 10);
        val tomAge = person getAge
        println(tomAge)
    }


    class Person(val name: String, val age: Int) {
        def getAge = {
            age
        }
    }

}

然而,在编译时,我有一个问题说:

error: recursive value tomAge needs type
        println(tomAge)

如果我将方法调用person getAge替换为person.getAge,程序将正常运行。
为什么person getAge的函数调用失败?

2 个答案:

答案 0 :(得分:6)

应谨慎使用后缀表示法 - 请参阅infix notationpostfix notation here部分。

  

此样式不安全,不应使用。因为分号是   可选,编译器将尝试将其视为中缀方法if   它可以,可能从下一行开始学习。

如果您将;附加到val tomAge = person getAge,您的代码将会生效(带有编译器警告)。

答案 1 :(得分:0)

def main(args: Array[String]) {
    val person = new Person("Tom", 10);
    val tomAge = person getAge; ///////////
    println(tomAge)
}

您的代码无效,因为您需要添加“;”在中缀操作中!

我尝试了你的例子here并且工作得很好!

See this answer,接受的答案显示了另一个例子