【发布时间】:2017-04-15 00:06:18
【问题描述】:
我正在尝试在 Scala 中创建 lambda 函数的映射
val identity = ((x:Any) => x)
val propmap = Map("references-count" -> identity,
"title" -> ((x:List[String]) => x(0)),
"score" -> identity,
"issued" -> ((x:List[Any]) => x(0)))
当我输入 propmap("score") 或 propmap("title") 时,我得到的输出是相同的:<function1>。
运行identity(10.1) 返回预期结果。不过
val f1 = propmap("score")
f1(10.9)
结果:
Name: Unknown Error
Message: <console>:29: error: type mismatch;
found : Double(10.9)
required: List[String]
f1(10.9)
^
StackTrace:
貌似函数被覆盖了。到哪里去追求不变性?
【问题讨论】:
-
看propmap的类型。此外,这个错误是编译时错误,你无法根据它推断出你程序的运行时属性。
标签: scala dictionary