2010-07-25 34 views
3

是的,您可以通過setName設置屬性名稱並通過getName獲取它。 但是關於在C#這樣的屬性是什麼:如何在Scala上使用屬性?

int Name{ 
    get{return name;} 
    set{name = value;} 
} 

Name{get; set;} 

(自動屬性)

我不知道如果在Scala中存在這樣的事情。谷歌搜索沒有任何信號。

回答

8
scala> class A { 
    | var name: String = "" 
    | } 
defined class A 

scala> val a = new A 
a: A = [email protected] 

scala> a.name = "kool" 

scala> a.name 
res0: String = kool 

scala> class A { 
    | private var _name = "" 
    | def name = _name     // a getter 
    | def name_=(value: String) {  // a setter 
    |  _name = value 
    | } 
    | } 
defined class A 

scala> val a = new A 
a: A = [email protected] 

scala> a.name = "abc" 

scala> a.name 
res1: java.lang.String = abc 
4

只是爲了保持完整性,如果你只是想固定字段(推薦!)

case class A(name: String) 

是一回事

class A(val name: String) 

至於固定字段/屬性。 「case」關鍵字自動生成構造函數參數vals,並添加其他好東西。

4

,如果你想的Java get/set方法

class Person { 
    @scala.reflect.BeanProperty 
    private var name: String = _ 
} 

val p = new Person 
p.setName("Peter") 
println(p.getName) 
您可以使用scala.reflect.BeanProperty