C# 如何在Scala上使用属性?
是的,您可以通过setName设置属性名称,并通过getName获取属性名称。 但是像C#中这样的属性呢: 或 (汽车财产)C# 如何在Scala上使用属性?,c#,scala,encapsulation,C#,Scala,Encapsulation,是的,您可以通过setName设置属性名称,并通过getName获取属性名称。 但是像C#中这样的属性呢: 或 (汽车财产) 我想知道Scala中是否存在这种情况。在没有任何信号的情况下进行谷歌搜索。如果您只需要不可变的字段(推荐!) scala> class A { | var name: String = "" | } defined class A scala> val a = new A a: A = A@1df3082 scala> a.n
我想知道Scala中是否存在这种情况。在没有任何信号的情况下进行谷歌搜索。如果您只需要不可变的字段(推荐!)
scala> class A {
| var name: String = ""
| }
defined class A
scala> val a = new A
a: A = A@1df3082
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 = A@baf4ae
scala> a.name = "abc"
scala> a.name
res1: java.lang.String = abc
是同一件事吗
class A(val name: String)
关于不可变字段/属性。“case”关键字会自动使构造函数参数变为VAL,并添加其他优点。如果需要java get/set方法,可以使用scala.reflect.BeanProperty
class Person {
@scala.reflect.BeanProperty
private var name: String = _
}
val p = new Person
p.setName("Peter")
println(p.getName)
case class A(name: String)
class A(val name: String)
class Person {
@scala.reflect.BeanProperty
private var name: String = _
}
val p = new Person
p.setName("Peter")
println(p.getName)