「リファレンス」の編集履歴(バックアップ)一覧に戻る
リファレンス - (2008/08/16 (土) 14:12:32) の編集履歴(バックアップ)
型
- nil
- SYMBOL
- REF
- シンボルの先頭に '$' をつけたもので、シンボルの内容を現します。
- LIST
- INTEGER
- REAL
- STRING
- BLOCK
- '{' と '}' で囲まれたスクリプトです。実行時にはクロージャになります。
- EVAL
- '[' と ']' で囲まれたスクリプトで、行が実行される際に事前に評価されます。
- OBJECT
- オブジェクトです。new コマンドと class コマンドによって生成されます。
- EXCEPTION
- 例外です。throw コマンドによって生成されます。
- CLOSURE
- BLOCK が実行されるとクロージャになります。クロージャは実行時の環境(ローカル変数、オブジェクト)を保持します。
- FUNC
- 関数です。fun コマンド、defun コマンドや、method コマンドで生成されます。
- CONTROL
- return/break/continue/redo/retry により生成されます。
評価の方法
- スクリプトは、複数の行から構成されます。
- 各行は ';' (セミコロン) で終了します。
- スクリプトの各行が順次実行されます。
- 各行の評価方法は次のとおりです:
- 行内の各、REF(ex. $XXX)、EVAL(ex. [XXX; ...]) を評価します。
- 行の先頭のシンボルを調べ、これが関数の場合は、その行の残りをパラメータとして関数を実行します。
- 行の先頭がオブジェクトの場合、2番目のシンボルを調べ、オブジェクトのメソッドであれば、3番目以降を引数としてメソッドを実行します。
- すべての関数、制御構造は、上記のとおり関数として実行します。
例:
if {$i > 10} then: {println "true"};
上記の場合、まず、'if' という関数が存在するかを調べ、この関数に対して {$i > 10} 、then: {println "true"} を引数として渡します。
if 関数は、{$i > 10} を評価し、この結果により then: ブロックを実行します。
$x foo 1;
上記の場合、$x がオブジェクトの場合、$x のメソッドとして 'foo' を調べます。foo が見つかった場合、$x のオブジェクト環境を設定し、foo の引数として 1 を渡し、実行します。
コマンドリファレンス
組み込みのコマンド(関数)の一覧です。
- false
- nil を返します。toy の場合、nil のみが偽として扱われます。
- true
- set
- sets
- defvar
- fun
- defun
- info
- 引数により次の情報を返します。local:ローカル変数、self:インスタンス変数、func:コマンド、class:クラス、global:グローバル変数。
- return
- break
- while/each から抜けます。引数を指定すると、while/each の戻り値となります。
- continue
- while/each の次のイテレーションを実行します。
- redo
- while/each の現在のイテレーションを再実行します。
- retry
- while/each を最初からやり直します。try コマンドの catch: ブロックで使うと、tryを最初からやり直します。
- new
- if
- コンディションの真偽により、then:ブロック、else:ブロックのいずれかを実行します。
- while
- コンディションが真の間中、do:ブロックを実行します。
- print
- println
- time
- class
- try
- ブロックを実行し、EXCEPTIONが発生した場合、catch: ブロックを実行します。そのさい、var: で指定した変数で EXCEPTIONを参照できます。fin: ブロックが定義されていた場合、try の終了時点で必ず実行されます。
- throw
- case
- set?
- sets?
- unset
- unsets
- self
- 自オブジェクトを返す関数です(変数ではありません)。
- stack-trace
- trap
- UNIXシグナルのハンドラを設定します。ハンドラを省略した場合、ハンドラは削除されます。
Objectクラスのメソッド
- vars
- method
- var?
- set!
- type?
- delegate?
- オブジェクトのデレゲータとして設定されているオブジェクトのリストを返します。
- string
Integerクラスのメソッド
- +,-,*,/,%
- =,!=,>,<,>=,<=
- ++,--
- インクリメント/デクリメント演算。オブジェクトの内容が直接変更されます。
- each
- オブジェクトの値から、to: で指定された値まで、do: ブロックを実行します。その際、var: で指定した変数が設定されます。
Realクラスのメソッド
Listクラスのメソッド
- last
- item/car
- next/cdr
- append!/+
- リストに要素を追加します。元のオブジェクトが変更されます。
- each
- リストの要素が順番に取り出され、do:ブロックが実行されます。その際、要素は var: で指定した変数で参照できます。
- len
- null?
- join
- リストの各要素を STRING へ変換し結合します。sep: キーワードが指定された場合は、要素間にセパレータ文字列を挿入します。
Stringクラスのメソッド
- len
- =,!=
- 比較演算。比較対象は、Object::string により変換されるため、どのようなオブジェクトも文字列として比較されます。
- +
- STRING オブジェクトに引数の要素を追加します。
- eval
Hashクラスのメソッド
- init
- set
- get
- set?
- keys
- Hashに設定されたすべてのkeyをリストで返します。
- pairs
- Hashに設定されたすべてのkey、value の対をドット対のリストで返します。
- len
- unset
Blockクラスのメソッド
Fileクラスのメソッド
- open
- ファイルをオープンします。mode: でオープンモードを指定します(i: 入力(デフォルト)、o: 出力、a: 追加書き出し)。
- close
- gets
- ファイルを行単位(\nで区切られた行)で読み込みます。
- puts
- flush
- stat
- eof?
- ファイルが EOF に達している場合、非 nil を返します。
Arrayクラスのメソッド
- + , append
- Array の最後の要素に値を追加します。要素数は自動拡張します。
- set
- Array の指定位置にオブジェクトを設定します。
- get
- len
- each
- Arrayの要素が順番に取り出され、do:ブロックが実行されます。その際、要素は var: で指定した変数で参照できます。