2013-07-11 50 views

回答

1

在一般功能的編程和Scala,你應該總是喜歡一成不變的對象。但是如果你需要改變對象狀態,那麼我會堅持(g | s)etters。在這種情況下,您可以在不更改對象的內部狀態的情況下返回具有修改狀態的新對象。

class MyClass(val name) { 
    def setName(newName: String) = new MyClass(newName) 
} 

這種方式保留永恆,給你制定者:setName(String)和getter:當你需要互操作性的高水平的一些Java代碼obj.name

@BeanPropery被使用,它可以幫助你快速生成(G | S) etters代碼,但它有一些限制,因爲你不能給這個方法你想要的名稱。

雖然我建議使用case類與複製方法:

case class Person(name: String, age) 
val me = Person("Alex", 23) // create an object 
val afterBD = me.copy(age = 24) 

相同的語義,但是純功能性的方法,沒有任何可變的內部狀態。

至於斯卡拉的Spring框架。我從來沒有工作過(謝天謝地)),但是關於這個話題還有很好的post