スクリプト/配列
配列とは
配列とは、順番に並んだデータの列で、
何番目という値を指定して、それに関連付けられたデータの操作を
おこなえるものです。
配列の作成
Rmakeのスクリプト言語(Arrp)での配列の作成は以下のようにおこないます。
a = createArray()
aというローカル変数に配列が入ります。
配列への参照
配列の何番目の要素に値を設定するには以下のように書きます
a[0] = 3 a[1] = 7
配列の何番目かを表わす値をインデックスと呼び、
Arrpでは0から始まります。インデックスにマイナスの値を指定するとエラーになります。
上の例ではインデックス0に3を設定、
インデックス1に7を設定します。
指定したインデックスの値を取得するにはたとえば次のように書きます。
speak("a[0] = ", a[0])
speak("a[1] = ", a[1])
この例ではインデックス0とインデックス1の値をメッセージウィンドウに表示しています。
配列のインデックスに変数を使う事もできます。
a = createArray() i = 0 while i < 3 a[i] = i i = i + 1 end
この例では a[0]=0, a[1]=1, a[2]=2 の値が入ります。
配列の長さ
配列の長さは以下の関数で取得することができます。
len = getArrayLength(a)
配列の長さはcreateArray()で作られたときは0から始まります。
配列に代入したときは最大のインデックス+1が配列の長さとなります。
pushArray, popArray, sliceArrayなど配列の長さを変える
効果を持つ関数を呼んだ場合はそれによっても長さが変わります。
使用例
配列の使用例は以下のとおりです。
#配列を作成します
a = createArray()
#配列に適当な値を追加します。
a[0] = 0.5
a[1] = 2.5
a[2] = 4.5
#配列の内容を切り捨ててメッセージウィンドウに表示します。
i = 0
while i < getArrayLength(a)
speak("a[", i, "] = ", floor(a[i]))
i = i + 1
end
#以下のように表示されます。
# a[0] = 0
# a[1] = 2
# a[2] = 4
#pushArray popArray sliceArrayの例です。
speak("push pop slice test")
#配列の末尾に6を追加します。
pushArray(a, 6)
#配列の内容は[0.5, 2.5, 4.5, 6]
#配列の末尾に8を追加します。
pushArray(a, 8)
#配列の内容は[0.5, 2.5, 4.5, 6, 8]
#配列の末尾の値を取得して、配列の末尾の値を消去します。
speak("pop", popArray(a))
#出力は以下の1行
# pop8
#配列の内容は[0.5, 2.5, 4.5, 6]
#配列のインデックスが1の値から2つ切り出して、それを配列の値とします。
a = sliceArray(a, 1, 2)
#配列の内容は[2.5, 4.5]
#配列の内容を表示します。
i = 0
while i < getArrayLength(a)
speak("a[", i, "] = ", a[i])
i = i + 1
end
#以下のように表示されます。
# a[0] = 2.5
# a[1] = 4.5
基本変数の場合
基本変数を使用した場合の例は以下のとおりです
setVariable("a", createArray())
getVariable("a")[0] = 0.5
getVariable("a")[1] = 2.5
getVariable("a")[2] = 4.5
i = 0
while i < getArrayLength(getVariable("a"))
speak("a[", i, "] = ", getVariable("a")[i])
i = i + 1
end
二次元配列をつくる事もできます。
setVariable("a", createArray() )
n = 0
while n < 10
getVariable("a")[n] = createArray()
n = n + 1
end
m = 0
while m < 10
n = 0
while n < 10
getVariable("a")[n][m] = n + m * 10
n = n + 1
end
m = m + 1
end
この例では a[0][0]~a[9][9]までの百個に、順に0~99の値が入ります
配列関連の関数
詳しくは以下のリファレンスをご参照ください。
createArray関数
http://rmake.jp/document/function_reference#createArray%E9%96%A2%E6%95%B0
配列への参照
http://rmake.jp/document/function_reference#[]%E9%96%A2%E6%95%B0
配列への参照
http://rmake.jp/document/function_reference#[]%E9%96%A2%E6%95%B0
配列の長さの取得
http://rmake.jp/document/function_reference#getArrayLength%E9%96%A2%E6%95%B0
pushArray関数
http://rmake.jp/document/function_reference#pushArray%E9%96%A2%E6%95%B0
popArray関数
http://rmake.jp/document/function_reference#popArray%E9%96%A2%E6%95%B0
sliceArray関数
http://rmake.jp/document/function_reference#sliceArray%E9%96%A2%E6%95%B0
このWikiの掲示板(すべて読む)
コメント一覧
投稿者:rurun9(投稿日:2010/02/21 18:41)
#基本変数 a を配列宣言します
setVariable("a", createArray() )
i=0 #配列 a に0~4を入れます
while i<5
#配列の要素に代入するときはsetじゃなくてgetで良いからややこしい
getVariable("a")[i]=i
i=i+1
end
speak("a=", getVariable("a") )
これを実行すると
a=0,1,2,3,4
と表示されます。
投稿者:rurun9(投稿日:2010/02/04 13:54)
素早い対応、大変ありがとうございます。
基本変数だと [] をどこに書いたら認識してくれるのか謎だったので、
whileと配列関連関数全部(とコピー配列)を使ってn番目を入れ替える動作をまるっとユーザー定義しちゃった所でした(汗
投稿者:dycoon(投稿日:2010/02/04 13:40)
Rmakeのご利用ありがとうございます。
基本変数を使う場合についても例を書いてみました。
バグがあって以前はこういう書き方ができなかったのですが、
現在は修正しています。
> では、配列a の n 番目の要素に b を代入する際にはどのように表記したら良いのでしょうか?
これについては以下のように書くとよいかと思います。
getVariable("a")[n] = b
よろしくお願いします。
投稿者:rurun9(投稿日:2010/02/04 00:57)
使用例ではローカル変数を用いていますが、
仮に基本変数 a を配列にした場合に
配列a の n 番目(注意点として、0番目が存在する)の要素の中身を取得するには
sliceArray( getVariable("a"), n, 1 )
と書けば良い事まではなんとか判りました。
では、配列a の n 番目の要素に b を代入する際にはどのように表記したら良いのでしょうか?
もし質問自体が意味不明だったりした時は、このコメントは削除しちゃって下さい
