JavaFXがPreview版から、ようやく1.0公開。
っつーことで、マニュアルから色々抜き出して覚え書き。
配列
def endangered = ['Caribou', 'Ocelot', 'Puma', 'Sei'];
println( endangered );
def flipped = reverse endangered;
println( flipped );
println( sizeof endangered );
for (mammal in endangered) {
println( 'Mammal #{ indexof mammal } is { mammal }' );
}
def
Javaで言うfinal。変数はvar
def x = bind y + z;
みたいにbindを使ってもいいけど、推奨はdef。
変数のアクセス制限
public, protected, package, public-read, and public-init
何にもつけないとprivate扱い。
on replace
var seq = ['A', 'B', 'C', 'D', 'E', 'F'] on replace oldValue[firstIdx .. lastIdx] = newElements {
println("replaced {oldValue}[{firstIdx}..{lastIdx}] by {newElements} yielding {seq}")
}
seq[3] = '$';
insert '#' into seq;
delete '$' from seq;
delete seq[2];
seq[1..4] = ['X', 'Y'];
delete seq;
initとisInitializedとpostinit
initブロックで初期化処理、postinitで終了時処理が書ける。
変数が初期化されているかどうかはisInitialized(変数)で判別できる。
on replaceと組み合わせても良い。
__DIR__と__FILE__
こういう感じ。
Image {
url: "{__DIR__}/myIcon.gif"
}
insert
var names = ['Evelyn', 'Will'];
insert 'Marsha' into names;
println(names);
insert ['Ron', 'Melissa'] before names[1];
println(names);
insert 'Daz' after names[3];
println(names);
delete
var names = [ 'Donna', 'Barb', 'Ron', 'Melissa', 'Will', 'Daz', 'Jim' ] ;
println(names);
delete 'Will' from names;
println(names);
delete names[1..3];
println(names);
delete names[0];
println(names);
delete names;
println(names);
キャスト
function toString(val : Object) : String {
if (val instanceof String)
val as String
else
"Not a String"
}
Sequence Select
def seq = [1..100];
def selected = seq[x | (x*x) < 20];
println( selected );
もしくは
def selected = for (x in seq where (x*x) < 20) x;
配列のスライス
def usprez = ['Washington', 'Adams', 'Jefferson', 'Madison', 'Monroe'];
println( usprez[1..3] );
println( usprez[1..<3] );
println( usprez[3..] );
println( usprez[3..<] );
ステップ
[100..90 step -3]