如何在 Scala 中使用属性?

发布于 2024-09-10 23:53:29 字数 260 浏览 6 评论 0原文

是的,您可以通过setName设置属性名称并通过getName获取属性名称。 但是 C# 中这样的属性怎么样:

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

Name{get; set;} 

(auto property)

我想知道 Scala 中是否存在这样的东西。搜了一下没有任何信号。

Yes, you can set a property name by setName and get it by getName.
But what about property like this in C#:

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

or

Name{get; set;} 

(auto property)

I wonder if such thing exists in Scala. Googling around without any signals.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

漫雪独思 2024-09-17 23:53:29
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
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
如歌彻婉言 2024-09-17 23:53:29

为了完整起见,如果您只想要不可变字段(推荐!),

case class A(name: String)

相同

class A(val name: String)

则与不可变字段/属性 。 “case”关键字自动使构造函数参数成为 val,并添加其他好处。

Just for completeness, if you only want immutable fields (recommended!)

case class A(name: String)

is the same thing as

class A(val name: String)

with regards to immutable fields/properties. The "case" keyword automatically makes the constructor arguments vals, as well as adding other goodies.

赏烟花じ飞满天 2024-09-17 23:53:29

如果你想要 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)

You can use scala.reflect.BeanProperty if you want java get/set methods

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

val p = new Person
p.setName("Peter")
println(p.getName)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文