2009-07-11 5 views
4

Я понимаю, что: state/does /. Он создает поле, как в Java, в вашем классе. Что я не понимаю, в чем смысл этого? Кажется, я только вижу, что это сделано с Clojure-сгенерированными классами, которые расширяют другие классы. http://www.fatvat.co.uk/2009/05/clojure-and-robocode.html является одним из примеров. Я не знаю Java, и я не очень хорошо разбираюсь в объектно-ориентированном программировании. Может кто-то объяснить точку: состояние для меня, и где все это вписывается в Java interop?Устранение неполадок: состояние в Clojure

Большое спасибо!

Примечания: Когда я говорю: состояние, я имею в вид (: генераторный класс: состояние)

ответ

2

Я говорил об этом с hiredman на канале #Clojure IRC, и он сказал мне, что главная точка это состояние для каждого экземпляра. В этом есть смысл.

3

: Состояние - это просто способ обмена некоторыми данными между функциями, сгенерированными как часть gen-класса. Подумайте об этом как о том же, что и данные экземпляра объекта.

3

Больше информации на state и как инициализировать его можно найти изделию gen-class – how it works and how to use it

Из статьи:

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

Таким образом, init возвращает состояние объекта и вызывается при создании объекта. state - это метод класса, а не функция, которая вернет то же значение, которое возвращается как второй элемент в векторе, возвращаемом init.

Далее в статье показано, как использовать атом, чтобы иметь возможность изменять состояние объекта, если это необходимо.