JavaFX Script Programming Language 学习 No.5

来源:互联网 发布:淘宝商品详情怎么做 编辑:程序博客网 时间:2024/05/29 15:10


第五课 Sequences

 

一、创建Sequences

创建Sequences的一种方法是明确列出它的项目。每个项目以逗号分隔,所列项目用方括号[]括起来。

示例代码1:

 


 

def weekDays = ["Mon","Tue","Wed","Thu","Fri"];

 


 

[说明]:上面的代码把一组字符串赋给了weekDays,用def是因为不打算改变其项目。这个Sequence中的每一项都是String类型的。如果想把各项目定义为Interger,可以这样def nums = [1,2,3];。

 

可以明确地指明Sequence的类型

示例代码2:


def weekDays: String[] = ["Mon","Tue","Wed","Thu","Fri"];


Sequence里也可以包括其他的Sequence

示例代码3:

 

 

 


 

 def days = [weekDays, ["Sat","Sun"]];

 


 

 [说明]:这种情况下,编译器会把days转换为下面代码所示的Sequence

示例代码4:


def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; 


 

 创建Sequences也可尝试缩略的形式,要创建一个从1到100的Sequence,可以这样写

示例代码5:


def nums = [1..100];


 

示例代码6:


override public function create():Node{
    return Group{
        content:[
            ImageView{
                image:image
                effect: bind PerspectiveTransform{
                    ulx: lx       uly:uly
                    urx: rx       ury:ury
                    lrx: rx       lry:height + uly
                    llx: lx       lly:height + ury
                }
            },
            Rectangle{
                translateX: bind lx
                width: bind rx - lx
                height: height
                fill: Color.rgb(0,0,0,0)
                blocksMouse: true
                onMousePressed:function(e:MouseEvent){
                    shelf.shiftToCenter(this);
                };
            }
       ]

    }
}


[说明]:ImageView是content这个Sequence 的第一项,Rectangle是content这个Sequence 的第二个项。两项之间用逗号分隔。

 

使用判断

可以使用一个布尔表达式(也叫判断),用已经存在的Sequence来声明一个新的Sequence。下面是一个已经存在的Sequence。

示例代码7:


def nums = [1,2,3,4,5];


基于上面的Sequence来创建一个新的Sequence,不过的项是在于2的。

示例代码8:


def numsGreaterThanTwo = nums[n | n > 2];


[说明]:1.新创建的sequence存储在numsGreaterThanTwo里;

2.代码nums[n | n > 2];中nums是原来的sequence.

3.从nums里选择出来的项返回给新的sequence.

4.'|'是分隔代码的,从nums[n | n > 2];分隔出n.

5.nums[n | n > 2];中加粗部分是一个布尔表达式.

 

二、访问Sequence的项

Sequence的项通过从0开始的数字索引来访问。

示例代码9:


def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

println(days[0]);
println(days[1]);
println(days[2]);
println(days[3]);
println(days[4]);
println(days[5]);
println(days[6]);


输出结果:

Mon
Tue
Wed
Thu
Fri
Sat
Sun

 

三、得到Sequence大小

示例代码10:


sizeof days

def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];println(sizeof days);


 

四、插入项到Sequence里

有三种方式,顺序插入(insert ... into ... ),插到某项前(insert ... befor ...[..]),插到某项后(insert ... after ...[..])

示例代码11:


var days = ["Mon"];
insert "Tue" into days;
insert "Fri" into days;
insert "Sat" into days;
insert "Sun" into days;
insert "Thu" before days[2];
insert "wed" after days[1];


 

五、删除项

有三种方式,如下面代码。

示例代码12:


delete "Sun" from days;
delete days[0];
delete days;


 

六、反转Sequence

使用操作符reverse 可以很容易的得到sequence的项。

示例代码13:


var nums = [1..5];reverse nums; // returns [5, 4, 3, 2, 1]

七、比较Sequence

比较两个sequence是否相等,用运算符==。

示例代码14:


def seq1 = [1,2,3,4,5];
def seq2 = [1,2,3,4,5];
println(seq1 == seq2);


输出结果:true

 

示例代码15:


def seq1 = [1,2,3,4,5];
def seq2 = [1,2,3,4,5,6];
println(seq1 == seq2);


输出结果:false

 

示例代码16:


def seq1 = [1,2,3,4,5];def seq2 = [1,3,2,4,5];println(seq1 == seq2);
输出结果:false
两个sequence只有在项数相同,项值相同,位置相同的情况下才相等。
使用sequence切片
切片访问sequence的部分
seq[a...b]
示例代码17:
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];def weekend = days[5..6];
[说明]:weekend包括"Sat"和"Sun"。
seq[a...<b]
示例代码18:
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];def weekdays = days[0..<5];
[说明]:weekdays包括"Mon","Tue","Wed","Thu","Fri"。
seq[a...]
示例代码19:
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];def weekend = days[5..];
[说明]:weekend包括"Sat"和"Sun"。
seq[a...<]

def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];def days2 = days[0..<];
[说明]:day2包括"Mon","Tue","Wed","Thu","Fri","Sat"。