if(<bool>,<expr>)
___
が返されます。 if
が使われるのは次のような場合です。if(x<0,println("x は負です"))
___
が返されます。if(<bool>,<expr1>,<expr2>)
if
文は、if/then/else に相当します。 この条件分岐の典型的な使用法は2つあります。まず、条件によって場合分けをするときに使います。.if(x<0, println("x は負です"), if (x>0, println("x は正です"), println("x は零です") ) )
x
の値が正か、負か、ゼロかを表示します。f(x):=if(x>0,x,-x)
f(x)
を定義します。A.color=if(A.x>0,(1,0,0),(0,0,1))
A
の色を、そのx座標の正負により、赤か青に設定します。trigger(<bool>,<expr>)
trigger
は if
とよく似ています。 if
とは対照的に、 trigger
は動的意味合いを持ちます。 <expr> は、条件 <bool> が false
から true
に変わったときに評価されます。たとえば、何かの要素をドラッグしているとき、<bool>が false
から true
に変化したことを察知して <expr> を評価(実行)します。 この演算子の目的は、要素をドラッグしているときに何らかのイベントが起きたかどうかを判断することです。 次のコードはそのような例です。trigger(A.x<0,println("A はxが負の半平面に入りました")) trigger(A.x>0,println("A はxが正の半平面に入りました"))
A
が y軸を横切るとメッセージを出します。while(<bool>,<expr>)
while
演算子は <bool>が真である間、<expr> を評価します。最後の評価値が関数の値として返されます。x=0; sum=0; erg=while(x<4, x=x+1; sum=sum+x; println(x+" --> "+sum); sum ); println(erg);
1 --> 1 2 --> 3 3 --> 6 4 --> 10 10
erg
の値は 10
になります。repeat(<number>,<expr>)
#
は繰り返しの回数を数えます。repeat(100, println(#+" の平方は "+#^2) )
repeat
ループにはいろいろな修飾子があります。修飾子として、開始値、終了値、ステップ値が使えます。 修飾子 start
は、ループの開始の値を設定します。修飾子 stop
は、ループの終了の値を設定します。修飾子 step
は、ステップの値を設定します。修飾子は任意に組み合わせることができます。3つの修飾子がひとつもなければ、 <number> 回だけ繰り返します。 修飾子には実数のみが使えます。次の表は、いくつかの修飾子の使い方を示します。スクリプト: | 出力: |
repeat(6, println(#+" ")) | 1 2 3 4 5 6
|
repeat(6, start->4, println(#+" ")) | 4 5 6 7 8 9
|
repeat(6, stop->2, println(#+" ")) | -3 -2 -1 0 1 2
|
repeat(6, step->3, println(#+" ")) | 1 4 7 10 13 16
|
repeat(6, stop->12,step->4, println(#+" ")) | -8 -4 0 4 8 12
|
repeat(6, start->3,step->2, println(#+" ")) | 3 5 7 9 11 13
|
repeat(6, start->3,stop->4, println(#+" ")) | 3 3.2 3.4 3.6 3.8 4
|
repeat(6, start->0,stop->-3, println(#+" ")) | 0 -0.6 -1.2 -1.8 -2.4 -3
|
repeat(6, start->3,stop->4,step->0.4, println(#+" ")) | 3 3.4 3.8
|
repeat(<number>,<var>,<expr>)
repeat(<number>,<expr>)
と同じです。これは、異なる実行変数を使って、ループを入れ子にすることを考慮しています。repeat(10,i, repeat(10,j, draw((i,j)) ) )
forall(<list>,<expr>)
#
はリストのそれぞれの要素になります。a=["this","is","a","list"]; forall(a,println(#))
this is a list
forall(<list>,<var>,<expr>)
forall(<list>,<expr>)
と同じです。eval(<expr>,<modif1>,<modif2>,…)
eval(x+y,x->2,y->5)
7
とします。createvar(<varname>)
removevar(<varname>)
createvar(x)
は新しい変数 x
を作り、前の値はスタックに入れられます。 removevar(x)
は局所変数を削除して、スタックの値を書き戻します。通常、変数は明示的に作られる必要はないと思ってください。それらは、最初に使われるときに自動的に作られます。 createvar
と removevar
は、コードの特定の部分に、ある名前で変数を予約したいときだけ使われます。x=10; println("x is now "+x); createvar(x); x=5; println("x is now "+x); removevar(x); println("x is now "+x);
x is now 10 x is now 5 x is now 10
regional(name1,name2,...)
clear()
文を置くのがしばしば有効になります。clear()
clear(<var>)
keys(<var>)
A:"age"=34; A:"haircolor"="brown";
println(A:"age"); println(A:"haircolor");
keys
関数は、オブジェクトに割り当てられた変数のリストを取得します。したがって、次のコードではprintln(keys(A));
["age","haircolor"]
が表示されます。
Page last modified on Wednesday 11 of February, 2015 [23:38:02 UTC].
The original document is available at
http://doc.cinderella.de/tiki-index.php?page=Control%20OperatorsJ