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)) 一旦你开始指定参数,你就不能回去.这是整个列表是隐含的还是没有的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |