Как сгенерировать геттеры и сеттеры для всего поля скалы в Intellij - PullRequest
0 голосов
/ 19 октября 2018

У меня есть код ниже

class TestData {
  private var name : String = _
  private var age : Int = _
}

Когда я пытаюсь сгенерировать методы получения и установки вышеупомянутого в классе java (alt + insert) -> generate-> then Это ak для всех доступных полей иЯ могу добавить несколько полей.

но то же самое, чего я хочу достичь в Scala, тогда он не запрашивает поля, а добавляет геттеры и сеттеры для первого поля.

Гуглил, но мог найти решение в Intellij.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Как сказано в комментарии, настоятельно не рекомендуется использовать изменяемые состояния в Scala, если вы все еще хотите это сделать, вы можете сделать следующее:

class TestData (var name: String, var age: Int)

Там вы можете создать объект и получитьзначение как object.attribute и установить значение как object.attribute = desiredValue

scala> val t = new TestData("edward", 12)
t: TestData = TestData@40ce2a1f

scala> t.name
res2: String = edward

scala> t.name = "Josh"
t.name: String = Josh

scala> t.name
res3: String = Josh

То, что вы должны использовать вместо классов с изменяемыми переменными, это класс с неизменяемыми значениями.Любой из этих вариантов будет более гибким:

class TestData (val name: String, val age: Int)
case class TestData (name: String, age: Int)
0 голосов
/ 19 октября 2018

Вы не должны использовать var s в Scala.Сохраняйте все как можно более неизменными.

При этом вы всегда можете использовать классы case вместо обычных классов, если вы действительно хотите класс с изменяемыми значениями.Классы Case генерируют для вас геттеры и сеттеры.

scala> case class Person(var name: String, var age: Int)
defined class Person

scala> val p1 = Person("billy", 12)
p1: Person = Person(billy,12)

scala> println(p1)
Person(billy,12)

scala> p1.age = 45
p1.age: Int = 45

scala> println(p1)
Person(billy,45)
...