descartes-src (ソースパッケージ descartes-src-0.26.0.tar.gz) | 2012-09-09 20:57 |
descartes-win (Windows用バイナリパッケージ descartes-win-0.26.0.zip) | 2012-09-09 20:52 |
会話キャラクター: ツンデレ アプリケーション (会話キャラ:ツンデレ v1.0 for Windows) | 2010-04-29 13:41 |
会話キャラクター: 2人の女の子 ダブルキャラクター (会話キャラクター 2人の女の子 ダブルキャラクター 1.0 for Windows) | 2011-10-02 22:23 |
会話キャラクター: Eliza風英語版 (会話キャラ:Eliza風英語版 v1.0 for Windows) | 2010-05-11 01:06 |
会話キャラクター: 猫耳メイド アプリケーション (会話キャラ:猫耳メイド v1.0 for Windows) | 2010-04-27 21:15 |
会話キャラクター: イライザ風日本語版 (会話キャラ:イライザ風日本語版 v1.0 for Windows) | 2010-04-30 21:53 |
経済指標表示プログラム for Windows (経済指標表示プログラム V1.0) | 2011-08-18 22:04 |
ニュースヘッドライン表示プログラム (ニュースヘッドライン表示プログラム V1.0 for Windows) | 2011-08-16 12:31 |
デカルト言語 example (デカルト言語の例題 example-0.7.0.zip) | 2009-03-01 19:47 |
電力状況表示プログラム for Windows (2011年夏版 全国電力供給状況表示プログラム V1.0) | 2011-08-15 13:25 |
動的にオブジェクトを生成するためには、newObj述語を使います。
以下の例では、新しいオブジェクトabcを生成します。
? <newObj abc>;
オブジェクトを削除するには、delObj述語を使います。
以下の例では、前項までに定義したabcオブジェクトを削除しています。
? <delObj abc>;
オブジェクト内にメソッドを追加するためには、addMethod述語を使います。
以下の例では、オブジェクトabcに対して<a> <b>;というメソッドを追加しています。
? ::abc <addMethod <a><b>>;
オブジェクト内のメソッドを削除するには、delMethod述語を使います。
以下の例では、前項で定義した<a>メソッドを削除しています。
? ::abc <delMethod a>;
オブジェクト内のインスタンス変数に値を設定するためには、setVar述語を使います。
以下の例では、オブジェクトabcのnumというインスタンス変数に1を設定しています。
?::abc <setVar num 1>;
numという変数が以前に使われていない新規の変数ならば新たに追加されます。
すでにあれば、値だけが更新されます。
オブジェクト内のインスタンス変数を削除するには、delVar述語を使います。
以下の例では、前項で定義した変数numを削除しています。
? ::abc <delVar num>;
オブジェクト内のインスタンス配列変数に値を設定するためには、setArray述語を使います。
以下の例では、オブジェクトabcのaryというインスタンス配列変数のインデックス0にに1を設定しています。
? ::abc <setArray ary 1 0>;
インデックスが最後の引数になっていることに注意してください。これは、関数述語としたいために、値を先に指定するようにしています。
インデックスには、数字だけではなく任意の値を設定できます。インデックスにリストを指定すると多次元配列として使えます。 (いわゆる連想配列になっています。)
? ::abc <setArray ary2 "red" (car body)>;
オブジェクトは以下のような形式で静的にも定義できます。
:: < オブジェクト名 メソッド または inheirt 継承オブジェクト >;
例として鳥、ペンギン、鷹のオブジェクトを動的に定義する例を以下に示します。
? <newObj bird>; ? ::bird <addMethod <fly>>; ? ::bird <addMethod <walk>>;
? <newObj penguin>; ? ::penguin <addMethod inheirt bird>; ? ::penguin <addMethod <fly> <!><false>>; ? ::penguin <addMethod <swim>>;
? <newObj hawk>; ? ::hawk <addMethod inherit bird>;
以下を試してみましょう。
? ::bird <swim>; ? ::penguin <swim>; ? ::bird <walk>; ? ::penguin <walk>; ? ::bird <fly>; ? ::penguin <fly>; ? ::penguin <run>; ? ::hawk <fly>; ? ::hawk <walk>; ? ::hawk <swim>;
結果は以下のようになります。
result -- ::bird <swim>> -- unknown 鳥が泳ぐのか分からない result -- ::penguin <swim>> -- true ペンギンは泳ぐ result -- ::bird <walk>> -- true 鳥は歩く result -- ::penguin <walk>> -- true ペンギンは歩く result -- ::bird <fly>> -- true 鳥は飛ぶ result -- ::penguin <fly>> -- false ペンギンは飛ばない result -- ::penguin <run>> -- unknown ペンギンが走るか分からない result -- ::hawk <fly>> -- true 鷹は飛ぶ result -- ::hawk <walk>> -- true 鷹は歩く result -- ::hawk <swim>> -- unknown 鷹が泳ぐのかわからない
[ページ情報]
更新日時: 2010-04-10 10:58:00, 更新者: hniwa
[ライセンス]
クリエイティブ・コモンズ 2.1 表示
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:ログインユーザ