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

Scala命名和默认参数结合隐式参数

发布时间:2020-12-16 09:01:49 所属栏目:安全 来源:网络整理
导读:考虑以下几点: def f(implicit a: String,y: Int = 0) = a + ": " + yimplicit val s = "size"println(f(y = 2)) 最后一个表达式导致以下错误: not enough arguments for method f: (implicit a: String,implicit y:Int)java.lang.String. Unspecified val
考虑以下几点:

def f(implicit a: String,y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))

最后一个表达式导致以下错误:

not enough arguments for method f: (implicit a: String,implicit y:
Int)java.lang.String. Unspecified value parameter a.

但是,如果为隐式参数a提供默认值,则没有问题:

def f(implicit a: String = "haha!",y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))

但最后一行打印

haha!: 2

而我本来预期的

size: 2

所以隐含的价值“没有被拾起.如果你不提供f的任何参数,只是调用

println(f)

那么隐含的值就被拿起来了

size: 0

有人可以看出这里发生了什么吗?

解决方法

尝试

println(f(y = 2,a = implicitly))

一旦你开始指定参数,你就不能回去.这是整个列表是隐含的还是没有的.

(编辑:李大同)

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

    推荐文章
      热点阅读