除了赋值操作(=)之外,JavaFX还提供数据修改操作符(insert和delete),它类似XQuery-Update规范中的语法和语义:
insert语句
可以用下面方式中的任意一种进行声明:
insert Expression1 [as first | as last] into Expression2
insert Expression1 before Expression2
insert Expression1 after Expression2
insert语句将表达式1求值后的返回结果插入到下面表达式中所描述的位置:
into
表达式2必须指向一个属性或者变量。如果表达式2指向一个单值属性,那么插入的效果等同于赋值操作。
如果指定了as first,那么插入位置就在表达式2所表示的列表的第一个元素的前面。如果指定了as last,那么插入位置就在表达式2所表示的列表的最后一个元素的后面。如果没有明确地指定as first或者as last,则默认为as last。
例如:
var x = [1,2,3];
insert 12 into x; // yields [1,2,3,12]
insert 10 as first into x; // yields [10,1,2,3,12]
insert [99,100] as last into x; // yields [10,1,2,3,12,99,100]
before, after
表达式2必须是在属性或者变量之上的选择表达式。如果指定了before,那么插入位置就是在被选择的元素之前。如果指定了after,插入位置则在被选择的元素之后。
例如:
var x = [1,2,3];
insert 10 after x[. == 10]; // yields [1,2,3,10]
insert 12 before x[1]; // yields [1,12,2,3,10]
insert 13 after x[. == 2]; // yields [1, 12, 2, 13, 3, 10];top
delete语句
delete语句可以使用下面形式中的一种:
delete variable
delete Expression.attribute
delete variable[predicate]
delete Expression.attribute[predicate]
前两种形式将删除变量或者属性中的所有元素,它们等价于将变量或者属性赋值为[]或者null。后两种形式仅删除满足断言的元素。
例如:
var x = [1,2,3];
insert 10 into x; // yields [1,2,3,10]
insert 12 before x[1]; // yields [1,12,2,3,10]
delete x[. == 12]; // yields [1,2,3,10]
delete x[. >= 3]; // yields [1,2]
insert 5 after x[. == 1]; // yields [1,5,2];
insert 13 as first into x; // yields [13, 1, 5, 2];
delete x; // yields []