在创建String到部分函数的映射时,我遇到了意外的行为。当我创建一个局部函数作为地图元素时,它工作正常。当我分配给val时,它会调用。尝试调用该检查会生成一个错误。这是预期的吗?我在做些什么愚蠢的事情?注释掉check()
以查看调用。我使用Scala的2.7.7什么时候是一个scala部分函数而不是部分函数?
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
}
感谢您的帮助。当我用dream()_替换我的dream()调用时,它表现得如我所料。我会出去阅读关于PartialFunctions的更多内容,这样我就不会再误用这个术语。 – 2010-05-21 00:26:32