Scala-IDEには次のコードがあります。
type myF = () => Boolean
def acceptFunction(f: myF) {
//...
}
その後:
var a = false
def isA = () => a
しかし、それをacceptFunctionに渡そうとすると、エラーが発生します。
acceptFunction(isA)
エラーは次のとおりです。
型の不一致; 見つかった:()=>必要なブール値:ブール値
しかし、なぜ?
私がこのように宣言した場合isA
:
def isA() = () => a
その後、受け入れられますが、括弧のために評価されると思います。
さらに評価するためにそのような関数を渡す方法はありますか?
アップデート:
Scala-IDEを使ったもののようです。REPLはこれらの式に問題はありません。ただし、渡された関数がクロージャにならないようにすることはできません。つまり、クロージャになり、var a
後で変更して例をprintln(f())
再度呼び出すと、値は変更されません。したがって、質問の2番目の部分は残ります-さらに評価するためにそのような関数を渡す方法はありますか?