Исток-Системы - Форумы
Поддержка пользователей программных продуктов и библиотек
Форумы
» Коммон Лисп для всех
» Русский LispWorks - Russian LispWorks
Дата 27 апр 2009 09:10
Пример Planets
(defclass PlanetBody ()
(
(DistantCoef :initarg :DistantCoef :accessor DistantCoef)
(Distant :accessor Distant)
(RadiusCoef :initarg :RadiusCoef :accessor RadiusCoef)
(Radius :accessor Radius)
(AngleSpeedCoef :initarg :AngleSpeedCoef :accessor AngleSpeedCoef)
(AngleSpeed :accessor AngleSpeed)
(Angle :initarg :Angle :accessor Angle)
(x :accessor X)
(y :accessor Y)
(Color :initarg :Color :accessor Color)
(Satellites :initarg :Satellites :accessor Satellites)
)
)
(defmethod InitializationSatellites ((Body PlanetBody) Satellites)
(cond
((null Satellites) t)
(t
(setf (Radius (car Satellites))
(* MERCURYRADIUS (RadiusCoef (car Satellites))))
(setf (Distant (car Satellites))
(* MERCURYDISTANT (DistantCoef (car Satellites))))
(setf (AngleSpeed (car Satellites))
(/ (/ (* 2 PI) MERCURYTURNTIME) (AngleSpeedCoef (car Satellites))))
(setf (X (car Satellites)) (+ (X Body)
(* (sin (Angle (car Satellites))) (Distant (car Satellites)))))
(setf (Y (car Satellites)) (+ (Y Body)
(* (cos (Angle (car Satellites))) (Distant (car Satellites)))))
(InitializationSatellites Body (cdr Satellites))
)
)
) ....
У меня несколько вопросов:
1) (DistantCoef :initarg :DistantCoef :accessor DistantCoef) - что означает это описание переменной класса (:initarg :DistantCoef :accessor что это вообще) ?
2) Как описываются методы и что значит defmethod InitializationSatellites ((Body PlanetBody) Satellites)?
3) И что значит make-instanse в следующем коде:
(set 'Sun
(make-instance 'PlanetBody
:DistantCoef 0
:RadiusCoef 2
:AngleSpeedCoef 10
:Angle 0
:Color :yellow
:Satellites nil
) ?
Буду очень признателен и извините за наглость)
PS Что значит ошибка "Warning in MAIN: SPACE assumed special"?
Последний раз редактировалось Admin 22 ноя 2011 18:23, всего редактировалось 2 раз(а).
:Distance воспринимается как смайлик
Admin
Администратор
Зарегистрирован 11 окт 2011
Сообщений 36
Дата 27 апр 2009 11:37
Пример Planets
Во-первых, Ваши вопросы не имеет отношения к специфике LispWorks - лучше спрашивать в fido7.ru.lisp.
Во-вторых, следовало для сообщения создать новую тему (я уже перенес сам).
Три Ваших вопроса весьма общи и показывают незнание базовых понятий, за разъяснением которых я вынужден направить Вас к учебникам.
Что касает ошибки "Warning in MAIN: SPACE assumed special", этот вопрос более конкретен. Скорее всего, где-нибудь забыли quote, т.е. space вместо 'space.
К сожалению, в приведенном фрагменте кода space нигде не встречается. Поэтому точнее ответить невозможно.
Дата 04 май 2009 16:57
Пример Planets
В том то и дело, что учебников найти не могу. Но вроде разобрался более или менее. Спасибо за ссылку
Форумы
» Коммон Лисп для всех
» Русский LispWorks - Russian LispWorks
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|