JavaFXの配列はちょっと違う?
forで配列を利用しましたが、「なんだ、配列でしか使えないなんて、forは不便だな」と思った人もいるかも知れません。が、それは違います。JavaFX Scriptでは、配列はJavaよりも重要な働きをしているのです。
配列の作成方法は、先に触れたように[]記号で要素をまとめて記述します。が、要素を1つずつ記述する他にも、変わった記述法が用意されています。それは、「等差級数」と呼ばれるものを使った指定です。
var 変数 = [開始値..終了値];
例えば、このように記述をすることで、開始値から終了値までのすべての値を要素として配列にもたせることができます。
var X = [0..10];
var Y = [0.1,2,3,4,5,6,7,8,9,10];
例えば、この2つの配列は、まったく同じ要素を持ちます。あるいは、開始値と次の値を指定することで、一定間隔で増減する配列を作成することもできます。
var X = [0,2..10];
var Y = [0,2,4,6,8,10];
例えば、この2つも同じ要素を持つことになります。[0,2..10]というように、ゼロと次のステップ2を入力することで、2ずつ増える要素を指定することができるのです。これをforで利用すれば、かなりJavaのforに近い使い方ができるようになります。
import java.lang.System;
var n = 0;
for(i in [0..100]){
n += i;
}
System.out.println("total:{n}");
先ほどのスクリプトを少し修正しました。これで0~100の合計を計算できます。(i in [0..100])という形で配列を指定すれば、for(int i = 0;i <= 100;i++)と同じ働きをすることができます。が、JavaFX Scriptのほうがずいぶんとシンプルでわかりやすくっているでしょう?
また、配列内から特定の要素を取り出す際には、Javaと同じく[]でインデックス番号を指定するのですが、これも「要素を抜き出す条件」を指定して特定の要素だけをピックアップすることができます。例えば、こんな感じです。
import java.lang.System;
var arr = [0..100];
var arr2 = arr[. % 10 == 0];
for(i in arr2){
System.out.print("{i} ");
}
これは、0~100の要素を収めた配列arrから、10の倍数の要素だけを抜き出して配列arr2を作成し、その内容を表示するものです。ここではarrの作成後、arr[. % 10 == 0]という形でarrの要素を指定していますね。この中のドット記号は、各要素を示します。つまりこれは「各要素 % 10 == 0」の要素だけをピックアップして取り出していたのです。
このように、JavaFX Scriptの配列は、Javaよりもはるかに強力です。単に複数の値を保管するというだけでなく、「連続する値」を扱うのに配列は多用されます。Javaに慣れていると、配列というのはつい「融通の利かないやつ」と思いがちですが、JavaFXではあらゆるところで配列を使います。配列の新しい使い方に慣れておきましょう。
今回は、基本文法の説明ということもあって、文字ばかりの説明となってしまいました。が、これでとりあえず、スクリプト作成に必要な基礎知識は身につきました。簡単なスクリプトなら書けるようになったはずです。では、次回から、JavaFXの最大のセールスポイントである「SwingベースのGUI」について、実際にスクリプトを書きながら学習していくことにしましょう。