Избегайте повторяющихся псевдонимов типов в классе Scala и сопутствующем объекте.

Я новичок в Scala, и у меня есть программа Scala с классом и сопутствующим объектом, и я хочу использовать псевдоним типа, который используется:

  1. Определить методы класса.
  2. Также я хочу использовать псевдоним вне класса. Для этого я считаю полезным определить псевдоним в объекте-компаньоне, чтобы импортировать псевдоним из объекта-компаньона. У меня также есть некоторые имплициты, определенные в объекте-компаньоне, так что это просто естественно.

Конкретный код доступен по адресу https://github.com/juanrh/Surus/blob/1cfd55ed49c4d1b22e53babe07bcf44fd74e3072/src/main/scala/org/surus/spark/SurusRDDFunctions.scala, псевдоним типа — PMMLPrediction, а класс — SurusRDDFunctions. В настоящее время код работает, но я определил псевдоним как в классе, так и в компаньоне, что не очень приятно. Если я удалю определение псевдонима в классе, то класс не сможет его найти, что кажется странным. Так что я думаю, что я, вероятно, делаю что-то не так, есть идеи?

Заранее большое спасибо за вашу помощь!

Привет,

Хуан


person juanrh0011    schedule 15.02.2015    source источник


Ответы (1)


Учитывая сопутствующий объект

object Example {
  type MyString = String
}

Вы можете получить доступ к типу напрямую через объект-компаньон

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

Или импортировав его из объекта-компаньона

class Example {
  import Example._

  val name: MyString = "example"
}
person mucaho    schedule 15.02.2015