本ページには広告が含まれています。
arrayの先頭に指定された要素を加えます。リストの要素は全体として加えられるため、加えた要素の順番は変わりません。
配列の末尾に要素を追加するにはarrayPush関数 (自作関数)を使います。
- 構文
- Double = arrayUnshift( array, value1, …, value16 )
- 引数
- array 必須
- 要素を加えられる配列
- values 必須
- 加える値をvalue1から順に指定
- 戻り値
- 処理後の配列の要素の数
プログラム
//////////////////////////////////////////////////
// 【引数】
// array : 要素を加えられる配列
// values : 加える値をvalue1から順に指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayUnshift(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM tmp[-1]
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
arrayPush(tmp, EVAL("value" + i))
i = i + 1
WEND
arrayMerge(tmp, array)
RESIZE(array, UBound(tmp))
SETCLEAR(array, EMPTY)
FOR i = 0 TO UBound(tmp)
array[i] = tmp[i]
NEXT
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// arr : 追加される配列(参照引数)
// tmp : 追加する配列
// 【戻り値】
// 追加した後の配列の要素数
//////////////////////////////////////////////////
FUNCTION arrayMerge(Var arr[], tmp[])
FOR n = 0 TO UBound(tmp)
arrayPush(arr, tmp[n])
NEXT
RESULT = UBound(arr)
FEND
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
解説
- 2行目
- valuesを格納するための配列。
DIM tmp[-1]
- 3行目
DIM i = 1
- 4,7行目
- value1から順にEMPTYになるまで処理を続けます。
WHILE EVAL("value" + i) <> EMPTY … WEND
- 5行目
- valueのi番目の要素をtmpの末尾に追加します。
arrayPush(tmp, EVAL("value" + i))
- 6行目
- iをインクリメントします。
i = i + 1
- 8行目
- tmpとarrayを結合した配列をtmpに格納します。
arrayMerge(tmp, array)
- 9行目
- arrayの要素数をtmpの要素数に合わせます。
RESIZE(array, UBound(tmp))
- 10行目
- arrayの要素を空にします。
SETCLEAR(array, EMPTY)
- 11-13行目
- tmpの要素をarrayに代入します。
FOR i = 0 TO UBound(tmp) array[i] = tmp[i] NEXT
- 14行目
- arrayの要素数を返します。
RESULT = LENGTH(array)
使い方
既存の配列の先頭に要素を追加
arrayの先頭にappleを追加します。
DIM array[] = "orange", "banana"
arrayUnshift(array, "apple")
FOR item IN array
PRINT item
NEXT
- 結果
apple orange banana
既存の配列の先頭に複数の要素を追加
arrayの先頭にappleとraspberryを追加します。
要素の追加は一つずつではなく全体で行われるので、apple、raspberryの順番は変わりません。
DIM array[] = "orange", "banana"
arrayUnshift(array, "apple", "raspberry")
FOR item IN array
PRINT item
NEXT
- 結果
apple raspberry orange banana
関連記事
- arrayPush関数 (自作関数)
- 配列の末尾に要素を追加します。
- CALCARRAY関数 (スクリプト関数)
- 配列の合計値・最小値・最大値・平均値を求めます。
- GETALLWIN関数 (スクリプト関数)
- 全ウィンドウのIDを取得します。
- GETOLEITEM関数 (スクリプト関数)
- JOIN関数 (スクリプト関数)
- 引数に指定した配列を結合し文字列を返します。
- SETCLEAR関数 (スクリプト関数)
- 配列のすべての要素を任意の値で埋めます。
- SHIFTARRAY関数 (スクリプト関数)
- 配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
- 連想配列
- 連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
- divisors関数 (自作関数)
- 引数に指定した数値の約数のリストを返します。
- LENGTH関数 (スクリプト関数)