今日は配列
昨日、書き忘れましたが、JavaFXだと文字列の+演算ができないようです
なので、式展開を使って文字列をつなげるわけですね、なるほど
var a = "aa"; var b = "bb"; var c = "{a}{b}";
それと、JavaFXでは文字列は"「ダブルクォート」でも'「シングルクォート」でも、どっちでもいいようです
さて、今日の本題、配列です
配列に関してはJavaとは大分違っています、結構面白いです、独特な感じがありますね
まず、宣言
var seq = [];
配列も、型の指定は自由です、指定したい場合は以下のよう
var seq: String[] = [];
宣言と同時の初期化はJavaとたいして変わりません
var seq: String[] = ["Math", "English"];
こんな事もできます
var subject: String[] = ["Science", "Society"] var seq: String[] = ["Math", "English", subject];
あと、数字の配列は範囲で指定して作成できます
var number1 = [1..5]; var number2 = [1,2,3,4,5];
この二つは1〜5までの数字を含んだ配列です
次のようなこともできます
var number1 = [1..10]; var number2 = number1[n | n > 5];
こうすると、number2は6〜10の数字を含んだ配列になります
興味深いのはnumber1[n | n > 5];がメソッドのように働いてることですね、新しい配列の参照を返しているように見えることです
本当はどう動いているのかはよくわかりませんが…
あと、Javaと同じように配列の要素にアクセスできます
var number1 = [1..10]; println(number1[3]);
配列の長さですが、sizeofというキーワードを使用します
var number1 = [1..10];
var n = sizeof number1;
println(n);
で、実はJavaFXの配列は、どっちかっていうとJavaの可変長配列、いわゆるListとかと近いです、配列に要素を足せます
var seq = ["aa","bb"]; insert "cc" into seq; println(seq);
こう書くと、seqの一番後ろに"cc"が足されます
配列の途中に新たな要素を入れることも可能です
var seq = ["aa","bb", "cc"]; insert "dd" before seq[1]; insert "ee" after seq[1]; println(seq);
beforeとかafterいったキーワードを使用して挿入できます
個人的には結構奇妙です
消すことも可能です
var seq = ["aa","bb", "cc", "bb"]; delete "bb" from seq; println(seq);
deleteキーワードと、fromキーワードをこんな風に使用すると消せます
2番目のccと4番目のccは両方とも消えます
普通にインデックスを指定しても消せるようです
var seq = ["aa","bb", "cc"]; delete seq[1]; println(seq);
あとは、順番を逆にするとか
var seq1 = ["aa","bb", "cc"]; var seq2 = reverse seq1; println(seq2);
seq2はseq1を逆順にした配列になります
これも新しい配列を返しているようです、興味深いです
まだ、色々と配列はありますが、今日は疲れたのでこのくらいで