String から部分関数へのマップを作成しているときに、予期しない動作に遭遇しました。部分関数をマップ要素として作成すると、正常に機能します。val に割り当てると、代わりに呼び出されます。チェックを呼び出そうとすると、エラーが発生します。これは期待されていますか?私は愚かなことをしていますか?をコメントアウトしてcheck()
、呼び出しを確認します。私はscala 2.7.7を使用しています
def PartialFunctionProblem() = {
def dream()() = {
println("~Dream~");
new Exception().printStackTrace()
}
val map = scala.collection.mutable.HashMap[String,()=>Unit]()
map("dream") = dream() // partial function
map("dream")() // invokes as expected
val check = dream() // unexpected invocation
check() // error: check of type Unit does not take parameters
}