Ich habe einige Fallklassen, in deren Begleitobjekt eine Methode tupled
definiert ist. Wie aus dem unten stehenden Code in Begleitobjekten hervorgeht, handelt es sich lediglich um eine Code-Duplizierung.Definieren eines Merkmals, das um die Fallklasse in der Scala erweitert werden soll
case class Book(id: Int, isbn: String, name: String)
object Book {
def tupled = (Book.apply _).tupled // Duplication
}
case class Author(id: Int, name: String)
object Author {
def tupled = (Author.apply _).tupled // Duplication
}
Aus einer anderen Frage (can a scala self type enforce a case class type), scheint es, wie wir nicht die Selbst Typ eines Merkmals ein Fall Klasse sein erzwingen kann.
Gibt es eine Möglichkeit, ein Merkmal zu definieren (z. B. Tupled
), das wie folgt angewendet werden kann?
// What would be value of ???
trait Tupled {
self: ??? =>
def tupled = (self.apply _).tupled
}
// Such that I can replace tupled definition with Trait
object Book extends Tupled {
}
Als eine Nebenbemerkung, 'fromTuple' könnte ein besserer Name für diese Methode sein - es ist wahr, dass Sie das' apply' tupling, aber Aufruf des Ergebnisses 'tupled' macht klingt wie die Umwandlung ist _to_ ein Tupel statt Weg von_. –
Vielen Dank !!! – TheKojuEffect
@TravisBrown Wie kann ich mit Fallklassen von 1 Parameter den gleichen Effekt erzielen? – vicaba