【发布时间】:2011-02-21 16:44:11
【问题描述】:
在创建 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
}
【问题讨论】:
-
感谢您的帮助。当我用 dream()_ 替换我的 dream() 调用时,它的行为符合我的预期。我会出去阅读更多关于 PartialFunctions 的内容,这样我就不会再误用这个词了。
标签: scala function functional-programming partial-application partialfunction