Ich habe eine Klasse aus einer Bibliotheksklasse und möchte die Methode unapply
überschreiben, um die Anzahl der zu übergebenden Parameter zu reduzieren, damit ich sie bei der Musterabgleichung verwenden kann. Ich mache das so:
object ws1 {
// eine Bibliotheksklasse
case class MyClass(a: Int, b: String, c: String, d: Double /* und viele mehr*/)
// mein erstelltes Objekt, um unapply von Klasse MyClass zu überschreiben
object MyClass {
def unapply(x: Int) = Some(x)
}
val a = new MyClass(1, "2", "3", 55.0 /* und viele mehr*/)
a match {
case MyClass(x /*nur der erste ist wichtig*/) => x // java.io.Serializable = (1,2,3,55.0)
case _ => "nein"
}
}
Aber ich möchte, dass es nur 1
zurückgibt. Was ist falsch daran?