Kiedy próbuję pominąć punkty od sposobu wywołania, jak w tym przykładzie programu:Co oznacza "typ rekursywny <method name>" w Scali?
object Test extends Application {
val baz = new Baz
var foo = baz bar
println(foo)
}
class Baz {
def bar = "bar"
}
otrzymuję dziwne błędy. Pierwszy to error: recursive method foo needs type: println foo
, a drugi to error: type mismatch; found: Unit, required: Int, println(foo)
. Pierwszy błąd został naprawiony w jakiś dziwny sposób, gdybym określił, że typem foo
powinien być String. Drugi nie zniknie, zanim wstawię kropkę między baz
i bar
. Jaka jest tego przyczyna? Dlaczego Scala uważa, że baz bar
jest metodą rekursywną?
Podobne: http://stackoverflow.com/questions/2246212/why-does-scalas-semicolon-inference-fail-here – missingfaktor