2012-08-02 106 views

回答

37

你想要的如何爲什麼?正如其他答案註釋,如何只是apply方法在自動生成的隨播對象上。

對於爲什麼:case類經常被用來在Scala中實現algebraic data types,並且new稀少構造函數允許代碼,更優雅(創建值看起來更像經由模式匹配解構它,例如)和更接近於其他語言中的ADT語法。

+1

謝謝你,這就是我要找的:) – 2012-08-03 16:29:18

1

案例分類爲您提供一個自動生成的apply函數,您可以像構造函數一樣使用它們的伴隨對象。

斯卡拉反編譯字節代碼,你會發現,如下創建apply功能:

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

例子:

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

下面三個都做同樣的事情。

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 

所以如果你使用val p1 = Person("Frank", 23)它不是一個構造,這個調用應用方法的方法。

更多信息請閱讀scala-object-apply-functions

相關問題