配列

数値配列

グローバル変数("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
      • where true
    • 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のデータを削除するとこう変わります。
0 abcde
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"を入れたい場合は次のように文字列を作成します。
  • [
    • 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

キーを使わないシンプルな書き方ではこうなります。
  • [
    • [
      • 1,
      • 2,
      • "abc" ],
    • [
      • 9,
      • 8,
      • "def" ]
    • ]
これを取り出す場合は次のようにします(例:jに格納されているとする)。
j → at(1) → at(2) → post to wall

さらに複雑な構造でデータを扱うことも可能です。
詳細はwikipediaを見てください。
http://ja.wikipedia.org/wiki/JavaScript_Object_Notation

その他

数値、文字列以外にもオブジェクトをまとめる配列も存在します。
下記にいくつか例を挙げます。
種別 内容
Pictures 画像(Picture)
Songs 曲(Song)
Sprite Set スプライト(Sprite)

これらも基本的な使い方は変わりません。
最終更新:2011年11月01日 09:00