Исток-Системы - Форумы
http://forum.ystok.ru/

Пример Planets
http://forum.ystok.ru/viewtopic.php?f=15&t=19

Автор:Гость
Дата: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
Дата:27 апр 2009 11:37
Заголовок сообщения:Пример Planets
Во-первых, Ваши вопросы не имеет отношения к специфике LispWorks - лучше спрашивать в fido7.ru.lisp.

Во-вторых, следовало для сообщения создать новую тему (я уже перенес сам).

Три Ваших вопроса весьма общи и показывают незнание базовых понятий, за разъяснением которых я вынужден направить Вас к учебникам.

Что касает ошибки "Warning in MAIN: SPACE assumed special", этот вопрос более конкретен. Скорее всего, где-нибудь забыли quote, т.е. space вместо 'space.
К сожалению, в приведенном фрагменте кода space нигде не встречается. Поэтому точнее ответить невозможно.
Автор:Гость
Дата:04 май 2009 16:57
Заголовок сообщения:Пример Planets
В том то и дело, что учебников найти не могу. Но вроде разобрался более или менее. Спасибо за ссылку
стр. 1 из 1 Часовой пояс: UTC + 3 часа
Разработка сайта Исток-Системы (www.ystok.ru) | Powered by phpBB (www.phpbb.com)