式の構文の最上位は独立した式であり、値式を持ち、値を持ちません(Void型)。

図 6.1. 式

insert | delete | while | break | continue | throw | return | try | 値式 [';']


insert

insert式は配列に値を挿入するのに使われます。値は配列でも構いません。

図 6.2. insert

'insert' 値式 {'into' 値式 | 'before' insert位置 | 'after' insert位置} ';'

図 6.3. insert位置

基礎式 '[' 値式 ']'
insert-intoは配列の最後に追加します。他の形式はインデクスの表現を使って挿入する値を、 配列のどこにするか指定することができます。 insert-beforeはインデクスで指定された要素の前に挿入し、 insert-afterはインデクスで指定された要素の後に挿入します。

例:

var names = ['Evelyn', 'Will'];
insert 'Marsha' into names;
println(names);
insert ['Ron', 'Melissa'] before names[1];
println(names);
insert 'Daz' after names[3];
println(names);
印字結果:
[ Evelyn, Will, Marsha ]
[ Evelyn, Ron, Melissa, Will, Marsha ]
[ Evelyn, Ron, Melissa, Will, Daz, Marsha ]

配列の挿入は配列に要素を挿入し、配列は決してネストしないことに注意してください。

マイナスのインデクスの前後への挿入は、配列の最初に挿入します。 配列の終端を超えるインデクスの前後への挿入は、配列の最後に挿入します。 ですが、この言語のV1.0ではこれらのケースは実装されていません。

insert式は値を持ちません。Void型になります。


delete

delete式は配列から一つまた複数の要素を削除するのに使われます。

図 6.4. delete

'delete' 値式 {'from' 値式} ';'

deleteには4つの形式があります。

表 6.1. deleteの形式

delete 配列 [index]indexの要素を配列から削除します。もしそのindexに要素が無い場合はdeleteは無視されます。
delete 配列 [begin..end]beginからendまでの要素を(両端を含めて)配列から削除します。もしこのインデクスに要素が無い場合はインデクスは無視されます。さらに一般的に、完全なスライス構文も使えます。スライスを参照してください。
delete value from 配列配列からvalueの存在をすべて削除します。もしvalueが無い場合は、なにも行いません。
delete 配列配列からすべての要素を削除します。配列自体は削除しません。

例:

var names = [ 'Donna', 'Barb', 'Ron', 'Melissa', 'Will', 'Daz', 'Jim' ] ;
println(names);
delete 'Will' from names;
println(names);
delete names[1..3];
println(names);
delete names[0];
println(names);
delete names;
println(names);
印字結果:
[ Donna, Barb, Ron, Melissa, Will, Daz, Jim ]
[ Donna, Barb, Ron, Melissa, Daz, Jim ]
[ Donna, Daz, Jim ]
[ Daz, Jim ]
[ ]
delete式は値を持ちません。これはVoid型です。


while

while式は、そのボディ部(閉じ括弧の後の式)を真偽値(値式)がtrueになるまで繰り返し評価します。 基本的にほとんどの言語のwhileループと同様です。

図 6.5. while

'while' '(' 値式 ')' 式

while式は値を持ちません。これはVoid型です。


break

break式の評価は、そのループの停止を引き起こします。そのループとは、while式とfor式のどちらでもです。

図 6.6. break

'break' ';'

break式は常にあっけなく完結して、値を持ちません。


continue

continue式の評価は、そのループをすぐに現在実行している反復を完了し、次の反復を試みます。 そのループとは、while式とfor式のどちらでもです。

図 6.7. continue

'continue' ';'

continue式は常にあっけなく完結して、値を持ちません。


throw

throw式は例外を上げます。エラーハンドリングと例外の章を参照してください。

図 6.8. throw

'throw' 値式 [';']


return

return式は関数からの復帰を引き起こし、任意的に関数の値を伴います。

図 6.9. return

'return' {値式 [';'] | ';'}


try

tryブロックで囲まれた式は例外をキャッチします。

図 6.10. try

'try' ブロック {finally句 | catch句[...] [finally句] }

図 6.11. catch句

'catch' '(' 書式引数 ')' ブロック

図 6.12. finally句

'finally' ブロック

tryブロックは、例外が投げられるか正常に終わるまで実行されます。 もし例外が投げられたら、各々のcatch句が順番に実行され 例外のオブジェクトがcatch句の書式引数に宣言されている型に該当するかどうかが見られます。 もし該当したら、catch句のブロックが、例外オブジェクトが書式引数に設定されて、実行されます。 他のcatch句は実行されません。もしcatch句が該当しなかったら、その例外はtryの外に伝播します。

try式はfinally句を持つことがあります。finally句は例外が投げられるかどうかによらず コードの部分を実行する機構を提供します。

catch句かfinally句のどちらにせよ、ひとつがあるべきです。

try式は値を持ちません。これはVoid型です。


Home