加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 多个参数列表和默认参数

发布时间:2020-12-16 09:51:24 所属栏目:安全 来源:网络整理
导读:编译此代码: class Test { def f(arg: Int)(defaultArg: String = Unit = println): Unit = ??? f(42)} 失败了 在类Test中缺少方法f的参数列表 [错误]未应用的方法仅在需要函数类型时转换为函数. [错误]您可以通过编写`f _`或`f(_)(_)`而不是`f`来显式转换.
编译此代码:

class Test {

  def f(arg: Int)(defaultArg: String => Unit = println): Unit = ???

  f(42)
}

失败了

在类Test中缺少方法f的参数列表
[错误]未应用的方法仅在需要函数类型时转换为函数.
[错误]您可以通过编写`f _`或`f(_)(_)`而不是`f`来显式转换.
[错误] f(42)
[错误] ^
[错误]发现一个错误

为什么会失败?它会引入歧义吗?是否可以使其无需借助单个参数列表?

解决方法

您的案例的正确语法如下:

f(42)()

您可以通过将defaultArg定义为隐式来调用f(42)工作:

def f(arg: Int)(implicit defaultArg: String => Unit = println): Unit = ???

然后你可以称之为:

f(42)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读