scala - 隐式是私有(private)的吗?

给定以下代码:

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/

相关文章:

php - 基于其他数组排序数组

python - Django 选择和字典

angular - 取消选中所有选中的复选框 Angular2

scala - 如何对spark Dataframe进行合并操作?

Python/Django - 需要一个字符串或类似字节的对象

apache-spark - 从 Spark 转换函数中动态地从 HDFS 读取文件

r - 如何在列表列上应用一个函数并在 dplyr 和 purrr 中返回另一个函数?

amazon-web-services - AWS : Security Group Auto Sc

cuda - 从未对齐的 uint8_t 重铸为 uint32_t 数组读取 - 未获取所有值

indexing - 确定 Teradata 中表的主索引