В классе case мне пришлось изменить один аргумент конструктора с String
на Set[String]
. Для обратной совместимости я добавил объект-компаньон с перегруженной функцией apply.
case class OldClass (x: String, y: Set[String] = Set()) {}
case class NewClass(x: Set[String], y: Set[String] = Set()) {}
object NewClass {
def apply(x: String): NewClass = NewClass(Set(x), Set[String]())
def apply(x: String, y: Set[String]): NewClass = NewClass(Set(x), y)
}
Теперь это работает:
val c = NewClass("xxx", Set[String]())
Но как я могу заставить эту работу работать:
val c = NewClass("xxx", Set())
Мне это нужно, потому что у меня есть код, который полагается на возможность создания NewClass
, подобного этому
Я получаю сообщение об ошибке:
overloaded method value apply with alternatives (x:String) <and> (x: String,y: Set[String]) cannot be applied to (String, scala.collection.immutable.Set[Nothing])