gpt4 book ai didi

scala - 为什么用作默认参数的函数文字需要参数类型?

转载 作者:行者123 更新时间:2023-12-02 01:08:49 24 4
gpt4 key购买 nike

这编译得很好:

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

明显的解决方法是使用 (_: X) => true,但为什么这是一个错误?我虽然在处理第二个参数列表时,从第一个参数列表获得的类型信息应该已经可用了?

使用 Scala 2.11.8 和 2.12.1 测试

最佳答案

看起来像this issue .请注意,这仅适用于默认参数;在其他地方,推理工作得很好。

例如,

// works
def walk1[X]: X => Boolean = _ => true

// fails
def walk2[X](f: X => Boolean = _ => true) = ???

关于scala - 为什么用作默认参数的函数文字需要参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com