Аргументы в вспомогательном конструкторе в Scala - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь создать 2 вспомогательных конструктора. Но не могу этого сделать.

class learnMultipleAuxuliaryConstructor(firstname: String,
                                        lastName: String,
                                        middleName: String) {
  println("This is primary constructor")
  println("Complete Name is " + firstname + lastName + middleName)
  def this(firstname: String) {
    this(firstname, "", "")
    println("This is Auxiliary constructor with firstname")
    println("First Name is " + firstname)
  }
  def this(lastname: String) {
    this("", lastname, "")
    println("This is Auxiliary constructor with lastname")
    println("lastname  is " + lastname)
  }
}

Могу ли я это сделать?

1 Ответ

2 голосов
/ 27 апреля 2020

Вы должны иметь разные подписи конструктора. Итак:

class learnMultipleAuxuliaryConstructor(firstname: String,
                                        lastName: String,
                                        middleName: String) {
  def this(firstname: String) ...
  def this(lastname: String) ...
}

невозможно. Для такого случая было бы лучше иметь параметры по умолчанию и именованные параметры:

class learnMultipleAuxuliaryConstructor(firstname: String = "",
                                        lastName: String = "",
                                        middleName: String = "")

new learnMultipleAuxuliaryConstructor(lastName = "Custom")

или отдельные методы в объектах-компаньонах с разными именами:

object learnMultipleAuxuliaryConstructor {
  def fromFirstName(firstName: String) = ...
  def fromLastName(lastName: String) = ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...