У меня есть случай из класса библиотеки, и я хочу, чтобы переопределить метод unapply
, чтобы уменьшить число параметров мне нужно пройти, чтобы сделать поиск по шаблону против него. Я делаю это:Перекрытие метод
object ws1 {
// a library class
case class MyClass(a: Int, b: String, c: String, d: Double /* and many more ones*/)
// my object I created to override unapply of class MyClass
object MyClass {
def unapply(x: Int) = Some(x)
}
val a = new MyClass(1, "2", "3", 55.0 /* and many more ones*/)
a match {
case MyClass(x /*only the first one is vital*/) => x // java.io.Serializable = (1,2,3,55.0)
case _ => "no"
}
}
Но я хочу, чтобы вернуться только 1
. Что случилось с этим?
, почему он возвращает Any в случае a или d? –
Не могли бы вы опубликовать фрагмент, который вызывает проблему? –
@Grienders Возвращает Любое из-за вашего случая по умолчанию, в котором указано возвращаемое значение «нет». Поскольку один случай возвращает Int и другую String, ближайший общий суперкласс для результата совпадения - Any. – Shadowlands