Deepak Garg
Deepak Garg

Reputation: 159

Arguments in Auxiliary Constructor in Scala

I am trying to create 2 auxiliary constructors .But not able to do so.

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)
  }
}

Can i do this?

Upvotes: 1

Views: 47

Answers (1)

Mateusz Kubuszok
Mateusz Kubuszok

Reputation: 27535

You have to have distinct constructor signatures. So:

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

is not possible. For such case it would be better to have either default parameters and named parameters:

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

new learnMultipleAuxuliaryConstructor(lastName = "Custom")

or separate methods in companion objects with distinct names:

object learnMultipleAuxuliaryConstructor {
  def fromFirstName(firstName: String) = ...
  def fromLastName(lastName: String) = ...
}

Upvotes: 2

Related Questions