前回,JavaFXでHello, World!アプリケーションを作成してみましたが,いかがだったでしょうか。宣言的文法によるGUIの構築の雰囲気だけでも感じていただけたと思います。
とはいうものの,Hello, World!アプリケーションはあまりにも単純です。もう少し複雑なアプリケーションを作るためには,JavaFX Scriptの文法を知らなくてはなりません。そこで,今回は基本的な文法について解説します。そして,次回は今回紹介した文法を駆使してアプリケーションを作ることに挑戦してみましょう。
データ型
JavaFX Scriptの基本となるデータ型は以下の通りです。
- 文字列 String
- 数値 Integer, Number
- 論理値 Boolean
- 時間間隔 Duration
- Void
- 関数 function
ここでは,関数型以外の型について説明します。関数型は,後述する関数の節で説明します。
文字列
JavaFX Scriptにおいて文字列を表す場合,シングルクォーテーション,もしくはダブルクォーテーションで文字列を囲みます。シングルクォーテーションとダブルクォーテーションの違いは特にありません。
文字列の型はStringで,基本的なデータ型として扱われます。
リスト1
var text1: String = 'Hello, World!';
var text2: String = "Hello, Japan!";
println(text1);
println(text2);
ここでは変数の定義に型名を指定していますが,式の右辺が文字列であるため,型名を省略して記述することもできます。このスクリプトを実行すると,以下のようになります。
Hello, World! Hello, Japan!
もちろん,シングルクォーテーションとダブルクォーテーションを混ぜて使うことはできません。しかし,たとえばシングルクォーテーションで囲んでいる場合,ダブルクォーテーションを文字列中に使うことは可能です。
文字列を囲っている文字と同じ文字を文字列中に使うには¥でエスケープします。
リスト2
var text3 = 'Hello, "World"!';
var text4 = "Hello, 'Japan'!";
println(text3);
println(text4);
var text5 = 'Hello, ¥'Asia¥'!';
var text6 = "Hello, ¥"Tokyo¥"!";
println(text5);
println(text6);
実行結果は次のようになります。
Hello, "World"! Hello, 'Japan'! Hello, 'Asia'! Hello, "Tokyo"!
なお,インタープリタ版では複数の行で表される文字列を使用することができましたが,現在はサポートされていません。
文字列中に { } が存在すると,括弧内に埋めこまれた式が評価され,展開されます。
リスト3
var nation = "Japan";
var text1 = 'Hello, {nation}!';
println(text1);
var x = 5;
var y = 10;
var text2 = "{x} + {y} = {x + y}";
println(text2);
この例のように式の埋めこみを使用すると,数値を文字列に変換することも可能です。では,このスクリプトを実行してみましょう。
Hello, Japan! 5 + 10 = 15
なお,文字列中に { } を使用したい場合,¥でエスケープします。
リスト4
println("Hello, ¥{World¥}!");
これを実行すると次のようになります。
Hello, {World}!
なお,インタープリタ版では開括弧はエスケープが必要でしたが,閉括弧はエスケープが不要でした。1.0では,開括弧,閉括弧の両方ともエスケープが必要なので,ご注意ください。
文字列を連結するにはconcat関数を使用します。Javaのように演算子の + を使用することはできないので,ちょっと不便ですね。
リスト5
var greeting = "Hello, ";
var nation = "Japan";
var mark ="!";
var hello = greeting.concat(nation).concat(mark);
println(hello);
concat関数は文字列を返すので,この例のようにconcat関数を並べて記述することができます。実行してみると,次のようになります。
Hello, Japan!
また,式の埋めこみを使用して文字列を連結することも可能です。
リスト6
var text1 = "Supercalifragilistic";
var text2 = "espialidocious";
var text3 = "{text1}{text2}";
println(text3);
実行結果を以下に示します。
Supercalifragilisticespialidocious

