How to use a property on Scala?

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

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

or

Name{get; set;} 

(auto property)

I wonder if such a thing exists in Scala. Restless work without signals.

+3
source share
3 answers
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
+8
source

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

case class A(name: String)

is the same as

class A(val name: String)

relatively immutable fields / properties. The keyword "case" automatically makes the arguments to the vals constructor, and also adds other goodies.

+4
source

scala.reflect.BeanProperty, , java get/set methods

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

val p = new Person
p.setName("Peter")
println(p.getName)
+4

Source: https://habr.com/ru/post/1756421/


All Articles