luna での変数定義の仕方
OHASHI Akira (=?ISO-2022-JP?B?GyRCQmc2NhsoQiAbJEI+NBsoQg==?=)
bg66 @ koka-in.org
2002年 5月 11日 (土) 21:38:22 JST
大橋です。
luna.el や shimbun のソース等を読みながら luna の勉強をしています。
クラスの作成、メソッドの定義、インスタンスの作成等は概理解した
のですが、変数(インスタンス変数、クラス変数)の定義の仕方が
良く判りません。
例えば下記のような TV クラスを定義しようと思った場合、
どのようにコーディングすれば良いのでしょうか。
+------------------------------+
| TV |
+------------------------------+
| int channel_ |
+------------------------------+
| void setChannel(int channel) |
| int getChannel() |
+------------------------------+
ひょっとしたら slot? を使用してどうにかするのかなぁと考えて、
以下のように書いてみたのですが、これで正しいでしょうか?
(luna-define-class tv () (channel))
(luna-define-internal-accessors 'tv)
(luna-define-generic set-channel (tv channel)
"Set channel to CHANNEL.")
(luna-define-generic get-channel (tv)
"Get channel.")
(luna-define-method set-channel ((tv tv) channel)
(tv-set-channel-internal tv channel))
(luna-define-method get-channel ((tv tv))
(tv-channel-internal tv))
このコードで、なんとなくそれっぽく動いているようです。
(setq my-tv (luna-make-entity 'tv))
(get-channel my-tv) => nil
(set-channel my-tv 1)
(get-channel my-tv) => 1
もしこれで良いとしたら、後もう一つの疑問は、
初回の get-channel で nil になるのを防ぎたいので初期値を設定したい
のですが、コンストラクタを定義するにはどう書けば良いのでしょうか?
# standard-object の initialize-instance が鍵かしら…
--
OHASHI Akira (大橋 彰)
bg66 @ koka-in.org bg66 @ debian.org
Share what you know. Learn what you don't.
More information about the Emacs-mime-ja
mailing list