したがってこれは空の文字列になります。文字列と整数の加算です。10は文字列に変換され、"10"となります。次が整数との乗算なので、結局また空文字列になってしまいます。ここまで説明すれば結果が文字列の"10"になる理由は明白でしょう。10の代入を先にしてもらいたいわけです。このような場合、文では以下のようにブラケットを過剰に付与することで演算順序をコントロールします。10))これで代入部分の優先度が一気に引き上げられました。今度は正しい結果が入るはずです。代入部分を囲むブラケットは2段で十分ではないかと思われるかも知れませんが、それも誤りです。10と同じ深さとなりますが、=と+では優先度が+のほうが高いのです。†フィードバック演算子&は、他の演算子とは使い方がまったく異なる独特の演算子です。100}関数呼び出しの際に引数として変数を与える場合、その先頭に&を書くことができます。先頭に&を付けられた変数は、呼び出し先関数の_argvの対応する要素へ関連付けられます。_argvを書き換えると、対応する呼び出し元の変数の値も書き換わるようになります。値が100に書き換わります。フィードバック演算子は好きな位置にいくつでも使用可能です。当然のことですが、フィードバック演算子は変数にしか付けられません。]は配列要素にアクセスするための演算子です。配列には文字列スプリットを擬似的に配列と見なす「簡易配列」と、カンマ区切りで列挙された要素を扱う「汎用配列」の2種類があります。文字列に含まれるカンマをデリミタ(区切り文字)と解釈して、配列のように扱う機能です。_a[1]}requestは"is"を出力します。]演算子が処理する対象は変数である必要はありません。値でも関数の返値でもいいです。上の例は以下のように書いても同じです。"this,is,a,pen"[1]}序数の後ろにカンマ区切りでデリミタを指定することにより、カンマでなく他の文字列で簡易配列要素を区切ることができます。island."[2,"is"]}"is"で区切るわけですから、文字列は以下のように分解されます。デリミタ指定をうまく使うと、多次元配列風に値を取り出すことが出来ます。_ar[2][1,"|"]}_ar[2]は"hotaru|female"です。"|"を区切り文字として解釈して[1]を取り出しますので、結果は"female"となります。このように、階層毎にユニークなデリミタを適用することによって、任意の位置の値を簡単に抜き出すことができるようになります。範囲外の序数を指定した場合の出力は、存在しない変数の値を取り出そうとした場合と同様、空の文字列となります。ここからは変数限定の機能を解説します。要素に代入が可能です。_a}"pen"を"eraser"に書き換えています。requestの実行結果は"this,is,a,eraser"となります。デリミタ指定しても正しく機能します。island."を出力します。]演算子を連結して使用している場合、代入はできません。"male"}ayameの性別をmaleに書き換えようとしていますが、この操作はエラーとなります。代入が可能なのは一次元の場合のみです。現在の要素数を越える位置へも問題なく代入できます。デリミタが自動的に追加され、要素数が拡張されます。_m}requestは"fuji/asama/tanigawa///daisen"を出力します。SETDELIMという関数を使用すると、「デフォルトのデリミタ」をカンマから別の文字列へ変更できます。先に示した例をSETDELIMを使用して書き換えたものを以下に示します。_m}SETDELIMすることにより、単純に_m[5]と書くことができるようになります。汎用配列はさまざまな型の値を混在して格納できる配列構造です。一般的なアクセスでは簡易配列より高速に動作します。(100,"test",-1.5)要素をカンマで列挙して記述します。100),"test",-1.5このように解釈されてしまいます。配列を空の状態で初期化するには、IARRAYという関数を使用します。IARRAYは「空の汎用配列」を返す関数です。IARRAY初期化時に要素をひとつだけ代入したい場合は工夫が要ります。したのでは、配列ではなくただの数値の代入になってしまうからです。以下のように記述します。(i,"add")とすると配列の後端に"add"が追加されます。配列を追加することもできます。1と略せるように、上の例は下のようにも書くことができます。("add",123,0.0)先頭への挿入も同じ書式で可能です。("first",i)中途への挿入もできます。"insertion"iは(100,200,300,"insertion",400,500,600)となります。挿入対象は[2]でなく[3]に入ることに注意してください。("insertion",i[2])とします。削除したい要素へIARRAYを代入します。IARRAY300が削除され、iは(100,200,400,500,600)となります。単純に要素へ代入できます。現在の要素数を越える位置へも問題なく代入できます。必要な数だけ要素数が拡張されます。通常の変数と同様、序数を指定して記述すればそのまま出力されます。範囲外の序数を指定した場合の出力は、存在しない変数の値を取り出そうとした場合と同様、空の文字列となります。(100,200,300,400,500,600)i[4]500が出力されます。]演算子が処理する対象は変数である必要はありません。値でも関数の返値でもいいです。(100,200,300,400,500,600)[4]500が出力されます。汎用配列をそのまま関数の出力にできます。"tenryu","bandou-tarou","ishikari","shimanto"}requestは"ishikari"を出力します。汎用配列は多次元配列を構成できません。(100,200,(300,400),500,600)このように書いても、内包されたブラケット部分が副次的な配列と認識されることはありません。結局以下のように単純に結合されてしまいます。要素単位の演算は通常に行うことが出来ます。汎用配列と単項値との演算は、「全要素へ単項値が演算される」という独特の動作となります。answerには4が代入されます。2*(1,2,3)の計算結果が(2,4,6)となるからです。文において関数の引数は汎用配列です。_argvの内容は、呼び出し側引数がそのまま代入された汎用配列となっています。(1,2,"test")func(_i)とも書けます。非常にトリッキーな表記ですが、これで意図どおりに動作します。書き直したスクリプトにおいても、引数の数は決して1個ではありません。この構造をうまく利用すると、可変長の引数を他の関数へ簡単に渡すことが出来ます。_answer}totalは自分では何もせず、すべての引数をそのままcalc_totalへ引き渡しています。この例では単純に引き渡していますが、もちろん必要に応じて加工してから渡すことも可能です。引数の指定方法が複雑になっている場合は注意すべきです。"sun")上の呼び出しは以下と等価です。汎用配列は多次元化できないことを思い出してください。island."[_i]簡易配列のデリミタ指定の部分も汎用配列です。したがって上のようなことも出来ます。これは下の記述と等価です。簡易配列/汎用配列とも、序数を範囲で指定できます。取得、代入とも可能です。範囲は汎用配列で指定します。「iの要素a~b」を表します。