3
这种精细编译:为什么用作默认参数的函数字面量需要参数类型?
def walk[X](a: X)(f: X => Boolean): Boolean = f(a)
walk(1)(_ => true)
编译没有问题,以及:
def walk(a: Int)(f: Int => Boolean = _ => true): Boolean = f(a)
walk(1)()
这不:
def walk[X](a: X)(f: X => Boolean = _ => true): Boolean = f(a)
walk(1)()
的错误是:
Error:(1, 38) missing parameter type
明显w^orkaround是使用(_: X) => true
,但为什么这是一个错误?我虽然认为当第二个参数列表正在处理时,从第一个参数获得的类型信息应该已经可用了?
测试使用Scala 2.11.8和2.12.1
哎呀我不小心删除我的评论:) OK呀,我意识到了,但是请不要编辑它强调的问题(甚至更好,完全删除这些行,问题是在定义中,不是调用) – slouc