5.1 式
Javaプログラミング言語と異なり、JavaFX台本型プログラミング言語は式言語である。すべての実行文は、0個以上の入力とそれに続く単一の出力から構成される式である。これには、条件、繰り返し、ならびにコード区画さえも含まれる。
次に実例を示す。
import java.lang.Math;
import java.lang.System;
var rand = (Math.random() * 100).intValue();
var s:String = null;
if (rand % 2 == 0) {
s = "rand is even"
} else {
s = "rand is odd"
};
System.out.println(s);
上記の例で、条件式ifのthen節とelse節は、それ自体が式、すなわち区画式である。
5.2 区画式
区画式は、中括弧({})で囲まれた、セミコロン(;)区切り文(宣言または式でもよい)の一覧から構成される。(区画内の)最後の文が式なら、その式の値が区画式の値となる。さもなければ、区画式はvoid型となる。
したがって、先の例は次のように書くこともできる。
import java.lang.Math;
import java.lang.System;
var rand = (Math.random() * 100).intValue();
var s:String =
if (rand % 2 == 0) {
"rand is even";
} else {
"rand is odd";
};
System.out.println(s);
あるいは、(次のように)中括弧を省略することができる。
import java.lang.Math;
import java.lang.System;
var rand = (Math.random() * 100).intValue();
var s:String = if (rand % 2 == 0) "rand is even" else "rand is odd";
System.out.println(s);
Javaプログラミング言語は、if文と条件式「a < b ? a : b」の両方を持っている。 区画式のおかげで、JavaFX台本型プログラミング言語のif式は、両者の代わりをしている。
5.3 値域式
値域式は、次の構文により、等差数列を形成している数値の列を定める。
[数1..数2]
値域式は、数1から数2までの整数(両端含む)からなる列を定める。 値域式の簡単な例として、次のようなものが考えられる。
import java.lang.System;
var nums = [0..3];
System.out.println(nums == [0,1,2,3]); // trueと表示する
既定では数値間の間隔は1だが、異なる値を指定することもできる。たとえば、次の式は、1から10の間の奇数からなる列を定める。
[1..10 step 2]
降順の値域を生成するためは、2つ目の値が1つ目の値より小さいことを確認し、負数の間隔を指定する。
import java.lang.System;
var nums = [3..0 step -1];
System.out.println(nums == [3,2,1,0]); // trueと表示する
次の宣言文は、実際には空の列を宣言することに留意せよ。
var nums1 = [3..0 ];
var nums2 = [3..0 step 1];
5.4 条件式
if式は、else節がさらなるif式でない限りthen節とelse節を囲む中括弧が常に必要であるという点を除いて、Java™プログラミング言語における表現と似ている。
if (condition1) {
System.out.println("Condition 1");
} else if (condition2) {
System.out.println("Condition2");
} else {
System.out.println("not Condition 1 or Condition 2");
}
5.5 繰り返し式
5.6 文
return文は、Javaプログラミング言語において見られるものと同一である。
function add(x, y) {
return x + y;
}
throw文は、(Javaプログラミング言語では)java.lang.Throwableを拡張したオブジェクトだけが投げられたり捕捉されたりできるという点を除き、Javaプログラミング言語のものと似ている。
import java.lang.Exception;
function foo() {
throw new Exception("this is a java exception");
}
function bar() {
throw "just a string";
}
tryとcatch文は、Javaプログラミング言語のものと似ているが、JavaFX台本型プログラミング言語の変数宣言の構文を用いる。
try {
throw "Hello";
} catch (s:String) {
System.out.println("caught a String: {s}");
} catch (any) {
System.out.println("caught something not a String: {any}");
} finally {
System.out.println("finally...");
}
break文とcontinue文は、Javaプログラミング言語のものと似ている。しかし、ラベルは支援されていない。break文とcontinue文は、whileまたはfor繰り返しの本体内に現れなければならない。
5.7 演算子
JavaFX台本型プログラミング言語は、Javaプログラミング言語にみられるものと同様の標準的な演算子を提供する。次の表は、Javaプログラミング言語における等価物と比較させながら、優先順位に従って演算子を一覧表にしたものである。
表 5.1 演算子の優先順位
優先度 JavaFX演算子 演算 Java演算子 結合規則
1 = 代入 = 右から左
2 += 加算代入 +=
-= 減算代入 -+
*= 乗算代入 *=
/= 除算代入 /=
%= 剰余代入 %=
3 and 論理and && 右から左
4 or 論理or || 右から左
5 instanceof 実体 instanceof 右から左
as 型変換 該当なし
sizeof 配列長 該当なし
indexof 索引位置 該当なし
new 生成 new
op() 関数呼び出し 該当なし
x.op() 要素関数呼び出し
6 == 等価 == 左から右
<> 不等価 !=
<= 以下 <=
<-
< 小なり <
> 大なり >
7 + 加算 + 右から左
- 減算、算術否定 -
8 * 乗算 * 右から左
/ 除算 /
% 剰余
=> 動画
9 ++ (前置) 1増 ++ 右から左
-- (前置) 1減 --
10 ++ (後置) 1増 ++ 右から左
-- (後置) 1減 --
import java.lang.System;
import java.lang.Math;
var x = 2;
var y = 4;
var a = true;
var b = false;
System.out.println(x == y); // falseを表示する
System.out.println(x <> y); // trueを表示する
System.out.println(x < y); // trueを表示する
System.out.println(x > y); // falseを表示する
System.out.println(x >= y); // falseを表示する
System.out.println(x <= y); // trueを表示する
System.out.println(x + y); // 6を表示する
System.out.println(x - y); // -2を表示する
System.out.println(x * y); // 8を表示する
System.out.println(x / y); // 0を表示する
System.out.println(x % y); // 2を表示する
System.out.println(a and b); // falseを表示する
System.out.println(a or b); // trueを表示する
System.out.println(not a); // falseを表示する
System.out.println(sizeof [x,y]); // 2 を表示する
System.out.println([x,y][e | indexof e == 0]); // [ 2 ]を表示する
System.out.println(if (a) x else y); // 2を表示する
System.out.println(for(q in [x, y] where q < 3) q); // [ 2 ]を表示する
System.out.println(Math.max(x, y)); // 4を表示する
System.out.println("abc".toUpperCase()); // ABCを表示する
System.out.println(x); // 2を表示する
0 件のコメント:
コメントを投稿