Вспомогательный конструктор в Scala с несколькими параметрами - PullRequest
3 голосов
/ 20 сентября 2019

У меня есть класс, который инициализируется целым числом и множеством.Я хочу создать вспомогательный конструктор, который принимает целое число и несколько параметров.Эти множественные параметры должны быть содержимым набора.

Мне нужна помощь в вызове основного конструктора с подходящими аргументами.

final class Soccer[A](max: Int, collection_num: Set[A]) {

///Auxiliary Constructor
/// new Soccer(n,A,B,C)` is equivalent to `new Soccer(n,Set(A,B,C))`.
///This constructor requires at least two candidates in order to avoid ambiguities with the
/// primary constructor.

def this(max: Int, first: A, second: A, other: A*) = {
///I need help calling the primary constructor with suitable arguments.
}

}

new Soccer (n, A, B, C) should be equivalent to новый футбол (n, сет (A, B, C))

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Попробуйте определить фабричный метод применения к объекту-компаньону вместо вспомогательного конструктора, например, так

object Soccer {
  def apply[A](max: Int, first: A, second: A, other: A*): Soccer[A] = {
    new Soccer(max, Set[A](first, second) ++ other.toSet)
  }
}

Теперь создайте Soccer, например,

Soccer(n,A,B,C)
.
1 голос
/ 22 сентября 2019

Использование метода apply в объекте-компаньоне - хороший способ выполнить требование, но если вы действительно хотите сделать это во вспомогательном конструкторе, просто вызовите метод this, например:

final class Soccer[A](max: Int, collection_num: Set[A]) {
  def this(max: Int, first: A, second: A, other: A*) = {
    this(max, Set[A](first, second) ++ other.toSet)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...