Более подробную информацию о state
и о том, как ее инициализировать, можно найти в статье gen-class - как она работает и как ее использовать
Из статьи:
:state
определяет метод, который будет возвращать состояние объекта.
:init
определяет имя инициализатора. Это функция, которая должна возвращать вектор. Первый элемент снова является вектором аргументов конструктора суперкласса. В нашем случае это просто пустой вектор. Второй элемент - это состояние объекта.
Таким образом, init
возвращает состояние объекта и вызывается при создании экземпляра объекта. state
- это метод класса, в отличие от функции, которая будет возвращать то же значение, что и второй элемент в векторе, возвращаемом init
.
Далее в статье показано, как использовать атом для изменения состояния объекта, если это необходимо.