在 Scala (2.9.2) 中,我试图创建一个在访问时提供其他值的函数
() => Any
我以为我通过名称/柯里化解决方案成功地做到了这一点:
def byName(theValue : => Any)() : Any = theValue
val myHolder = byName(myValue)_
所以我的持有人是正确的类型。但是我发现在创建这个 curried 函数的过程中,按名称参数被评估。如果我执行以下操作,它会按预期工作:
def byName(theValue : => Any) : Any = () => theValue
val myHolder = byName(myValue)
我得出结论,柯里化过程的某些部分是引用第一个参数列表并触发其评估。任何人都可以确认和/或解释为什么或是否有任何关于使用具有多个参数列表的名称参数的指南?