マニュアル > 拡張機能 > 配列・テーブル
リストとの違い
配列、テーブル、リストはどれもほぼ同じ働きをするが、それぞれ動作に特徴がある。
特徴に沿った使い方をすることで、モデルをより速く動かすことが出来る。
配列は、サイズが固定された値の集合を扱うときに便利である。格納場所さえ分かっていれば、
すばやく任意の値を参照、変更することが出来る。
テーブルはある値と値の関連付けを行うものである。
例えば、単語とその定義でテーブルを作成する場合、単語がテーブルの「キー」となる。
これにより、キーから定義を検索することが出来る。
使用方法
各拡張機能は NetLogo にプリインストールされている。
モデル内で使用する時は、プログラムの最初に以下のように書き加える。
extensions [array]
また、複数の拡張機能を同時に使うことも出来る。
extensions [array table]
テーブルキーの制限
なお、テーブルキーは 文字列、数字、ブール値、リストのどれかでなければならない。
(リストの場合は中身が上記の型であれば、入れ子になっていても使用可能である)
使用例
矢印は print文による出力結果を示す。
配列の場合
let a array:from-list n-values 5 [0]
print a
=> array: 0 0 0 0 0
print array:length a
=> 5
foreach n-values 5 [?] [ array:set a ? ? * ? ]
print a
=> array: 0 1 4 9 16
print array:item a 0
=> 0
print array:item a 3
=> 9
array:set a 3 50
print a
=> array: 0 1 4 50 16
テーブルの場合
let dict table:make
table:put dict "turtle" "cute"
table:put dict "bunny" "cutest"
print dict
=> table: "turtle" -> "cute", "bunny" -> "cutest"
print table:length dict
=> 2
print table:get dict "turtle"
=> "cute"
print table:get dict "leopard"
=> 0
print table:keys dict
=> ["turtle" "bunny"]
使用上の注意
"NetLogo World" でファイルに書き出す際に
(メニュー画面 > Export > World、もしくはコマンド "export-world "ファイル名"")
配列やテーブルの中身は変数ではなく「値」として書き出されてしまう。
このため、2カ所以上で配列やテーブルを使用している場合、出力されたものを再入力すると
別の配列・テーブルとして複製されてしまう。
このため、一方の値を書き換えても他方は書き換えられない、ということが起きる。
関数一覧
配列
array:from-list
与えられたリストと同じ要素を同じ順番で持つ配列を新しく作成する
使い方:array:from-list リスト名
array:item
インデックス(配列の何番目かを示す)で指定された場所にある要素を返す
使い方:array:item 配列名 インデックス
array:set
指定した配列のインデックスに値を格納する
使い方:array:set 配列名 インデックス 値
array:length
配列の長さ、つまり配列に入っている数値の数を返す
使い方:array:length 配列名
array:to-list
与えられた配列と同じ要素を同じ順番で持つリストを新しく作成する
使い方:array:to-list 配列名
テーブル
table:clear
table:from-list
table:get
table:has-key?
table:keys
table:length
table:make
table:put
table:remove
table:to-list
最終更新:2009年06月07日 00:03