Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
JavaFX Scriptプログラム言語を学ぼう
演算子は、一つか二つのオペランド(演算対象)に特定の操作を実行して結果を返す特別な記号です。 JavaFX Scriptプログラム言語は、割り当て演算子、算術演算子、単項演算子、等価演算子、比較演算子、 条件演算子、型比較演算子を提供します。演算子に提供されている正式な記述については、 JavaFXプログラム言語リファレンス の 図 6.2 - 6.8 をご覧ください。
割り当て演算子の"="は、あなたが出くわすもっとも一般的に使われる演算子の一つです。 オペランドの右辺の値を左辺に割り当てるのに使います。
result = num1 + num2; days = ["Mon","Tue","Wed","Thu","Fri"];
あなたは既に前のレッスンの多くでこの演算子を使っています。
算術演算子は加算、減算、乗算、除算の実行を可能にします。 mod演算子は一つ目のオペランドで他方を割って、余りをその結果として返します。
+ (additive operator) - (subtraction operator) * (multiplication operator) / (division operator) mod (remainder operator)
次のスクリプトは例です。
var result = 1 + 2; // result is now 3 println(result); result = result - 1; // result is now 2 println(result); result = result * 2; // result is now 4 println(result); result = result / 2; // result is now 2 println(result); result = result + 8; // result is now 10 println(result); result = result mod 7; // result is now 3 println(result);
あなたは複合の割り当て式を作るために、算術演算子を割り当て演算子と結合することもできます。 例えば、result += 1; や、result = result + 1; のようにです。 どちらもresultの値に1をインクリメントしています。
var result = 0; result += 1; println(result); // result is now 1 result -= 1; println(result); // result is now 0 result = 2; result *= 5; // result is now 10 println(result); result /= 2; // result is now 5 println(result);
この振る舞いを使えない唯一の算術演算子がmodです。 例えば、もしresultを2で割りたいなら、剰余を割り当ててそれに返すようにして result = result mod 2; と書く必要があります。
ほとんどの演算子は二つのオペランドを必要とします。単項演算子はオペランドを一つだけ使い、 値を1だけインクリメント/デクリメントするような操作を実行します。
- Unary minus operator; negates a number ++ Increment operator; increments a value by 1 -- Decrement operator; decrements a value by 1 not Logical complement operator; inverts the value of a boolean
次のスクリプトは単項演算子をテストします。
var result = 1; // result is now 1 result--; // result is now 0 println(result); result++; // result is now 1 println(result); result = -result; // result is now -1 println(result); var success = false; println(success); // false println(not success); // true
インクリメント/デクリメント演算子はオペランドの前(接頭)か後(接尾)に付けることができます。 コード result++; と ++result;はどちらも最後にはresultは1だけインクリメントされます。 唯一の違いは接頭(++result)はインクリメントされた値が評価され、一方、接尾(result--)は 元の値が評価されます。 (あなたはどちらがどちらなのか次のように覚えることができます。 ++resultはインクリメントしてから値を取得し、一方、result++は値を取得してからインクリメントします。) 単純にインクリメント/デクリメントをしたいだけなら、どちらを選んでも問題ありません。 しかし、この演算子を大きな式の一部で使うなら、あなたの選択が重大な違いになります。
次のスクリプトはこの違いを説明しています。
var result = 3; result++; println(result); // result is now 4 ++result; println(result); // result is now 5 println(++result); // result is now 6 println(result++); // this still prints 6! println(result); // but the result is now 7
等価演算子と比較演算子はひとつのオペランドが他方より大きいか、小さいか、等価か、等価でないか、 を決定します。
== equal to != not equal to > greater than >= greater than or equal to < less than <= less than or equal to
次のスクリプトはこれらの演算子をテストします。
def num1 = 1; def num2 = 2; println(num1 == num2); // prints false println(num1 != num2); // prints true println(num1 > num2); // prints false println(num1 >= num2); // prints false println(num1 < num2); // prints true println(num1 <= num2); // prints true
条件andと条件or演算子は二つの真偽式で条件の演算を実行します。 これらの演算子は"短絡的な"振る舞いを見せます。 その意味は、二つ目のオペランドは必要なときだけ評価するということです。 例えば、and演算子では、最初の式の結果がfalseなら、二つ目の式は評価されません。 例えば、or演算子では、最初の式の結果がtrueなら、二つ目の式は評価されません。
and or
次のスクリプトは、これらの演算子の使い方をデモします。 usernameとpassword変数の定義して、変数が条件に合致するかを印字します。
def username = "foo"; def password = "bar"; if ((username == "foo") and (password == "bar")) { println("Test 1: username AND password are correct"); } if ((username == "") and (password == "bar")) { println("Test 2: username AND password is correct"); } if ((username == "foo") or (password == "bar")) { println("Test 3: username OR password is correct"); } if ((username == "") or (password == "bar")) { println("Test 4: username OR password is correct"); }
出力:
Test 1: username AND password are correct Test 3: username OR password is correct Test 4: username OR password is correct
instanceof演算子は、あるオブジェクトと指定した型を比較します。 あなたはこれを、あるオブジェクトが特定のクラスのインスタンスがどうかを決定するのに使えます。
def str1="Hello"; println(str1 instanceof String); // prints true def num = 1031; println(num instanceof Integer); // prints true
このチュートリアルに続くレッスンでクラスと継承についてさらに学習するとき、 この演算子が便利あることに気がつくでしょう。
[PageInfo]
LastUpdate: 2009-07-29 17:13:28, ModifiedBy: happyhills
[Permissions]
view:all, edit:login users, delete/config:members