给定以下代码:
class Foo[R](i: Int)(implicit ev: Ordering[R]) {
final type T = ev.type
}
我收到以下错误:
Error:(13, 16) private value ev escapes its defining scope as part of type Foo.this.ev.type type T = ev.type
这让我觉得在构造函数中声明的隐式是私有(private)的。
鉴于 T
是最终的,它不会被覆盖,所以它不应该引起任何问题。我在这里错过了什么?
最佳答案
在 class
构造函数中声明的所有参数都是 private
除非您告诉编译器它们不是。这与 case class
不同,在 case class
中,第一个参数列表中的所有参数默认都是 public
,除非您以其他方式告诉编译器。
所以,是的,除非您专门为该值添加 val
或其他一些类似 public 的修饰符,否则默认情况下它是 private
。因此,它告诉您一个私有(private)成员通过您定义该 type
的方式公开。
https://stackoverflow.com/questions/40137810/