2012-08-02 8 views

Antwort

37

Wollen Sie die wie oder warum? Wie die andere Antwort bemerkt, ist die wie nur die apply Methode auf dem automatisch generierten Begleitobjekt.

Für die warum: Fallklassen werden häufig verwendet algebraic data types in Scala zu implementieren und der new -weniger Konstruktor ermöglicht Code, eleganter ist (Wert Schaffung von mehr sieht aus wie es über Pattern-Matching, zum Beispiel Dekonstruktion) und das ähnelt mehr ADT-Syntax in anderen Sprachen.

+1

danke Mann, das ist, was ich suche :) –

1

Fallklassen bieten Ihnen eine automatisch generierteapply Funktion auf ihrem Companion-Objekt, das Sie wie einen Konstruktor verwenden können.

In Scala Bytecode dekompilierten werden Sie apply Funktion wie die folgende erstellt finden:

object Person { 
def apply(name: String, age: Integer): Person = new Person(name,age) 
} 

Beispiel:

case class Person(name: String, age: Integer) 

Die folgenden drei alle das gleiche tun.

val p0 = new Person("Frank", 23) // normal constructor 

val p1 = Person("Frank", 23) // this uses apply 

val p2 = Person.apply("Frank", 23) // using apply manually 

Also, wenn Sie val p1 = Person("Frank", 23)verwenden ist es kein Konstruktor, ist dies ein Verfahren, das Verfahren anzuwenden nennen.

Bitte lesen Sie scala-object-apply-functions für weitere Informationen.

Verwandte Themen