今日は配列

昨日、書き忘れましたが、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を逆順にした配列になります
これも新しい配列を返しているようです、興味深いです

まだ、色々と配列はありますが、今日は疲れたのでこのくらいで