第8章 関数
8.4 リスト関数
構文
n0 = listlen(a1)
戻り値
リストの長さを返します。
未定義の場合には0を返します。
使用例
<!REPLACE 'listlen(v)'> → 0
<!SETVAR v "abc">
<!REPLACE 'listlen(v)'> → 1
<!SETVAR v[1] "def">
<!REPLACE 'listlen(v)'> → 2
<!SETVAR v[99] "ghi">
<!REPLACE 'listlen(v)'> → 100
8.4.4 pop
説明
popは、リストから要素を取り出す関数です。
構文
x0 = pop(a1)
戻り値
popは、末尾から取り出した要素を返します。
使用例
<!SETVAR L0 '("ab", "cd", "ef")'>
<!SETVAR x 'shift(L0)'>
<!REPLACE x> → ab
<!REPLACE 'L0[0]'> → cd
<!SETVAR y 'pop(L0)'>
<!REPLACE y> → ef
注意
空のリストに対してこの関数を使用した場合、未定義オブジェクトが返され、a1の値は、空のリストのままになります。
8.4.5 push
説明
pushは、リストに要素を追加する関数です。要素は末尾に追加されます。
構文
n0 = push(a1, a2)
・ 要素を追加するリストを指定してください。
a2:
・ 追加される要素のリストを指定してください。
戻り値
要素数を返します。
使用例
<!SETVAR L0 '("ab", "cd")'>
<!SETVAR L1 '("ef", "gh")'>
<!SETVAR dummy 'push(L0,L1)'> → L0が("ab","cd","ef","gh")になる
<!SETVAR dummy 'push(L0,"ij")'> → L0が("ab","cd","ef","gh","ij")になる
8.4.6 reverse
説明
reverseは、指定されたリストを逆順に並べ替えてできるリストを作成する関数です。
構文
a0 = reverse(a1)
戻り値
リストa1の逆順のリストを返します。
使用例
reverse((1, 2, 3)) → (3, 2, 1)
8.4.7 shift
説明
shiftは、リストから要素を取り出す関数です。
構文
x0 = shift(a1)
戻り値
shiftは、先頭から取り出した要素を返します。
必要な要素を取り出したあと、残りの要素は1つずつ前に詰められます。
使用例
<!SETVAR L0 '("ab", "cd", "ef")'>
<!SETVAR x 'shift(L0)'>
<!REPLACE x> → ab
<!REPLACE 'L0[0]'> → cd
<!SETVAR y 'pop(L0)'>
<!REPLACE y> → ef
注意
空のリストに対してこの関数を使用した場合、未定義オブジェクトが返され、a1の値は空のリストのままになります。
8.4.8 sort
説明
sortは、ソートを行う関数です。
構文
a0 = sort(a1 [, s2 [, s3 ] ])
パラメタ a1:
・ ソート対象となる値を指定してください。
s2:
・ 要素の比較方式を指定してください。
・ "STRING":文字列として比較します。
・ "STRING_IGNORECASE":文字列としての比較です。大文字と小文字の違いは無視します。
・ "NUMBER":数値として比較します。
・ s2 パラメタが省略された場合は、"STRING"が指定されます。
n3:
・ ソート順を指定してください。
・ 昇順の場合は0を、降順の場合は1を指定してください。
・ 省略された場合は、0が指定されます。
戻り値
ソート結果を返します。
使用例
sort((10, 1, 2)) → (1, 10, 2) sort((10, 1, 2),"NUMBER") → (1, 2, 10)
8.4.9 split
説明
splitは、指定されたセパレータ用文字で文字列を分割し、分割した文字列からなるリストを作成する関数です。
構文
a0 = split(s1, s2 [, n3])
パラメタ
s2:
・ 分割する文字列を指定してください。
n3:
・ 最大要素数を指定してください。
・ 0または負の数を指定した場合は、省略されたものとみなされます。
戻り値
s1 をセパレータとして、文字列s2 を分割したリストを返します。
n3が指定された場合は、最大要素数をn3とするリストを返します。
使用例
split(" ", "ab cd ef") → ("ab", "cd", "ef") split(":", "ab:cdef::g") → ("ab", "cdef", "", "g") split("xxy", "abcxxydefxxy") → ("abc", "def", "") split(" ", "ab cd ef", 2) → ("ab", "cd ef") split(":", "abcdef") → ("abcdef")
8.4.10 subscr
説明
subscrは、リストのキーに対応する添字を取得する関数です。
構文
n0 = subscr(a1, s2)
戻り値
リストa1 のキーs2 に対応する添字を返します。
対応するキーがない場合は、-1を返します。
使用例
<!VAR v0>
<!SETVAR 'v0{foo}' 100>
<!SETVAR 'v0{bar}' 200>
<!REPLACE 'subscr(v0, "foo")'> → 0
<!REPLACE 'subscr(v0, "quux")'> → -1
8.4.11 unshift
説明
unshiftは、リストに要素を追加する関数です。要素は先頭に追加されます。
構文
n0 = unshift(a1, a2)
パラメタ a1:
・ 要素を追加するリストを指定してください。
a2:
・ 追加される要素のリストを指定してください。
戻り値
要素数を返します。
使用例
<!SETVAR L0 '("ab", "cd")'>
<!SETVAR L1 '("ef", "gh")'>
<!SETVAR dummy 'unshift(L0, L1)'> → L0が("ef", "gh", "ab", "cd")になる
<!SETVAR dummy 'unshift(L0, "ij")'> → L0が("ij", "ef", "gh", "ab", "cd")になる