Как автоматически сгенерировать метод with ... type в intellij - PullRequest
1 голос
/ 29 апреля 2019

Можно ли с помощью IntelliJ для Scala создать метод типа with...?

Пример:

case class Person(name: String, age: Int)

Я хотел бы найти инструмент для автоматической генерации метода типа:

def withName(name: String): Person = this.copy(name=name)

def withAge(age: Int): Person = this.copy(age=age)

это возможно?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Если вы хотите автоматически генерировать эти методы, а не писать их явно (даже с помощью шаблона IntelliJ), вы можете сделать это с помощью макроса аннотации, который будет выполняться во время компиляции.

В частности, вы можете проверить информацию об этом проекте scalameta . Однако обратите внимание, что макросы являются экспериментальной функцией, которая, вероятно, изменится тривиальным образом, когда выйдет Scala 3. По моему мнению, вам следует задуматься о том, стоит ли писать withName(name) вместо copy(name=name), чтобы определить все эти методы (будь то вручную, с помощью фрагментов IntelliJ или с помощью макросов), и использовать макросы только в том случае, если избавить вас от множества неприятностей.

2 голосов
/ 30 апреля 2019

Нет такого готового решения, но вы можете создать собственный шаблон scala:

  1. Выберите Настройки / Предпочтения |Редактор |Текущие шаблоны.

  2. Из опций справа откройте список шаблонов Scala.

  3. Нажмите +, чтобы добавить новый шаблон.

Вы можете увидеть пример здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...