避免 Scala class 和伴随对象中的重复类型别名

Avoid duplicate type alias in Scala class and companion object

我是 Scala 的新手,我有一个带有 class 和伴随对象的 Scala 程序,我想使用一个类型别名:

  1. 定义class的方法。
  2. 我还想使用 class 之外的别名。为此,我发现在伴随对象中定义别名、从伴随对象导入别名很有用。我还在伴随对象中定义了一些隐式,所以这很自然。

具体代码见https://github.com/juanrh/Surus/blob/1cfd55ed49c4d1b22e53babe07bcf44fd74e3072/src/main/scala/org/surus/spark/SurusRDDFunctions.scala,类型别名是PMMLPrediction,class是SurusRDDFunctions。目前代码有效,但我已经在 class 和同伴中定义了别名,这不是很好。如果我删除 class 中别名的定义,那么 class 将无法找到它,这看起来很奇怪。所以我想我可能做错了什么,有什么想法吗?

非常感谢您的帮助!

你好,

胡安

给定伴生对象

object Example {
  type MyString = String
}

您可以直接通过伴随对象访问类型

class Example (val name: Example.MyString) { }

或者从伴随对象中导入它

class Example {
  import Example._

  val name: MyString = "example"
}