JavaFXその後
その後もちょぼちょぼいじっているのだけど,結構落とし穴が..
多次元配列(というか配列の配列)が作れない
なんでだか知らないが作れない.普通に実装するとできてしまいそうなものだが,作れないようなのだ.
var a: Integer [][];
と宣言しようとしてもエラーがでる.
そもそも配列のリテラルがかなり強烈で,
[ [1, 2], [3, 4] ]
のような,他の言語だったら配列の配列宣言のように見えるものを書くと
[ 1, 2, 3, 4 ]
に展開されてしまうという... これって便利か?
回避策
配列をクラスでラップしてやれば,その配列は作れる.
class IntArray { attribute content: Integer []; } var x = [IntArray{content: [1, 2]}, IntArray{content: [3,4]}]; System.out.println(x[0].content[0]);
うーん,めんどい.
バインドは1回だけ
JavaFXの強烈な機能「bind」は一つの変数に対して生成時に一回だけしか使えない.
let a = bind b; ... なんかの処理 let a = bind c; ...
みたいなことは書けない.じゃあ,条件に応じてbindする変数を変化させたいような場合にはどうするかというと,if 文を書くことができる.
var b = 10; var c = 20; var x = true; let a = bind if (x) b else c; System.out.println(a); x = false; System.out.println(a);
こうすると,
10 20
となる.
さらに関数にバインドすることもできるので,実際には困ることはないのかもしれない.