配列
数値配列
グローバル変数("data")ではNumber Map、ローカル変数(var)ではmath → create number mapを使用します。
数値配列は整数インデックスで値を格納しますが、実際には連想配列に近い動作になります。
データの追加は次のように行います。
- 例
- // data → vは"data"でNumber Mapとして定義
- // Number Mapはcreate number mapをしておかないと使用できない
- data → v := math → create number map
- // インデックス5に123を設定
- data → v → set at(5,123)
- // インデックス8に987を設定
- data → v → set at(8,987)
Number Mapは必ずcreate number mapで初期化しないと値の追加ができません。
もしセーブデータ的な使い方で前回実行時の値を残しておきたい場合は、if data → v → is invalid then等で判断して、初期化されていなければcreate number mapを行うといった処理にする必要があります。
値の取り出しはdata → v → at(5)やdata → v → at(8)のように行います。
登録されている全ての値を取り出すにはfor eachを使用します。
- 例
- // data → vに保存されている全ての値を取り出す
- for each x in data → v
- do
- // xにはインデックスが入っている
- x → to string → concat("=") → concat(data → v → at(x)) → post to wall
結果はこうなります(post to wallは上の方が新しい行になります)。
finished
8=987
5=123
他言語であれば通常の配列は「インデックスの最大数+1=配列の個数」となりますが、このNumber Mapでは「実登録数=配列の個数」となります。
上記例でいえばdata → v → countは2となります(他言語なら9となる)。
このため、for eachではなくforを使用すると期待通りの結果が得られない場合があります。
- 例
- // forを使って全ての値を取り出そうとすると…
- for 0 ≦ i < data → v → count do
- i → to string → concat("=") → concat(data → v → at(i)) → post to wall
このようにインデックス0~1の2個しか取り出せないことがわかります。
finished
1=0
0=0
もちろんdata → v → countを使わずにfor 0 ≦ i < 9 doのように指定すればインデックス0~8の全ての値を取り出すことができます。
文字列配列
グローバル変数("data")でString Collectionで作成できます(ローカル変数で作成できるかどうかは調査中)。
文字列配列は一般的なインデックスを使ったリニアな配列です。
また、Number Mapと異なり初期化が不要です。
データの追加は次のように行います。
- 例
- // data → sは"data"でString Collectionとして定義
- // 初期化は不要だが前回実行時の値が残っているのでクリア
- data → s → clear
- // データを追加・インデックスは0になる
- data → s → add("abcde")
- // データを追加・インデックスは1になる
- data → s → add("日本語も使えます")
- // データを追加・インデックスは2になる
- data → s → add("てすとです")
String Collectionのデータ追加(add)はインデックスが0から順に1、2、3…と追加する毎に自動的に加算されていきます。
一度登録したデータは削除することはできますが、内容を書き換えたり途中に追加したりはできません。
途中のデータを削除した場合は空いた分は詰められます。
例えば上記例ではこのようにデータが格納されています。
| 0 |
abcde |
| 1 |
日本語も使えます |
| 2 |
てすとです |
ここでdata → s → remove at(1)としてインデックス1のデータを削除するとこう変わります。
全てのデータを取り出す方法はNumber Mapと同じでfor eachが使用できます。
また、String Collectionではインデックスとcountが一致するためfor 0 ≦ i < data → s → count doでも問題なく動作します。
JSON
簡単にいうと多重に入れ子にできる多次元連想配列です。
jsonに登録したいデータをstringに入れて、(json object)hoge := web → json(s)が一番手軽です。
通常のリニアな配列のように使用する場合は[値1, 値2, 値3]のように[]でくくり、連想配列にしたい場合は{"キー1": 値1, "キー2": 値2, "キー3": 値3}のように{}でくくります。
[]と{}を組み合わせることも可能です。
例えば値1、2、"abc"を入れたい場合は次のように文字列を作成します。
これを取り出す場合は次のようにします(例:jに格納されているとする)。
j → at(0) → post to wall
キーを付けて連想配列としたい場合は次のように文字列を作成します。
- {
- "x": 1,
- "y": 2,
- "z": "abc"
- }
これを取り出す場合は次のようにします(例:jに格納されているとする)。
j → field("z") → post to wall
多次元にしたい場合はこのような書き方になります。
- {
- "hoge": [ {
- "x": 1,
- "y": 2,
- "z": "abc" },
- "x": 9,
- "y": 8,
- "z": "def" } ]
- }
これを取り出す場合は次のようにします(例:jに格納されているとする)。
j → field("hoge") → at(1) → field("y") → post to wall
キーを使わないシンプルな書き方ではこうなります。
これを取り出す場合は次のようにします(例:jに格納されているとする)。
j → at(1) → at(2) → post to wall
その他
数値、文字列以外にもオブジェクトをまとめる配列も存在します。
下記にいくつか例を挙げます。
| 種別 |
内容 |
| Pictures |
画像(Picture) |
| Songs |
曲(Song) |
| Sprite Set |
スプライト(Sprite) |
これらも基本的な使い方は変わりません。
最終更新:2011年11月01日 09:00