2012-08-02 18 views

Respuesta

37

quiero que la cómo o por qué la ? Como dice la otra respuesta, cómo es solo el método apply en el objeto complementario generado automáticamente.

Por qué : clases de casos a menudo se utilizan para implementar algebraic data types en Scala, y el constructor new -menos permite código que es más elegante (la creación de un valor se parece más a la deconstrucción de que a través de la coincidencia de patrones, por ejemplo) y que se asemeja más a la sintaxis de ADT en otros idiomas.

+1

gracias, esto es lo que estoy buscando :) –

1

Las clases de casos le proporcionan una función generada automáticamenteapply en su objeto complementario que puede usar como un constructor.

En Scala descompilar el código de bytes se encuentra apply función creada como la siguiente:

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

Ejemplo:

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

El tres siguientes todos hacemos lo mismo.

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 

tanto, si utiliza val p1 = Person("Frank", 23)no es un constructor, este un método que llama a aplicar el método.

Por favor, lea scala-object-apply-functions para obtener más información.

Cuestiones relacionadas