JavaFx中文入门教程--数组
2008-08-18 17:22
555 查看
http://cnjavafx.cn/javafx/index.html
数组
除了五种基本类型,JavaFx还提供了另外一个很常用的数据结构,数组。这个类型的英文名字为sequence,准确的说,不能翻译成数组,实际从行为上看更像是ArrayList。姑且称之为数组,并不影响理解。
定义格式:[...],用方括号括起来,逗号分隔的一串表达式值。
下面是两个简单的数组定义:
var weekDays = ["Mon","Tue","Wed","Thur","Fri"];
var days = [weekDays, ["Sat","Sun"]];
数组表示一串有序的对象。但是,数组本身跟其他对象是有区别的,这个体现在,数组不能嵌套。在上例中的days,在表达式中出现了嵌套的数组,会被自动平展开。比如上面例子中:
days == ["Mon","Tue","Wed","Thur","Fri","Sat","Sun"]; // returns true
数组是通过值来比较是否相等的,只有元素个数相等,且每一个元素也相等的时候,两个数组才被认为相等。
另外,有一个例外的地方,单个对象跟只有一个元素的数组是相等的,即:
1 == [1]; // returns true
数组类型的变量是通过[]来表示的,所以,数组会声明成这个样子:
var xs:Number[]; // Number 数组
var strs:String[]; // 字符串数组
数组元素可以通过下标来访问,这个跟Java的语法一样:
var wednesday = days[2];
为了方便书写,JavaFx提供了一个简便的方法,用".."来表示一个数字数组。就像这样:
var nums = [1..100];
var nums2 = [1..100 step 2];
[]操作符支持元素过滤,语法为:
数组[变量|逻辑表达式]
例如:
var nums = [1,2,3,4];
var numsGreaterThanTwo = nums[n|n > 2];
片段操作(slice),这个操作十分灵活,比较有用。
seq[a..b] // a, b 之间的元素,包括a,b
seq[a..<b] // a, b 之间的元素,包括a, 不包括b
seq[a..] // 跟 seq[a..<sizeof seq] 一样
seq[a..<] // 跟 seq[a..<sizeof seq-1] 一样
for 遍历
看一个简单的完整例子:sequence01.fx
package example;
import java.lang.System;
var seq1 = [1, 2, 'abc', 23.5, 3ms];
System.out.println(seq1);
for (it in seq1) {
System.out.println(it);
}
编译运行看结果:
#javafxc sequence01.fx -d .
#javafx example.sequence01
[ 1, 2, abc, 23.5, 3.0ms ]
1
2
abc
23.5
3.0ms
where 操作
可以在数组后面附带一个where语句,对数组元素遍历进行一个过滤条件的设置。看一段代码:sequence02.fx
package example;
import java.lang.System;
function factors(n:Number) {
return for (i in [1 .. n/2] where n mod i == 0) i;
}
for (i in factors(56)) {
System.out.println(i);
}
for表达式的值是每次循环的返回值所组成的一个数组,所以这里factors的返回值是一个数组,元素为符和整除56的条件。
#javafxc sequence02.fx -d .
#javafx example.sequence02
1.0
2.0
4.0
7.0
8.0
14.0
28.0
where的另一种比较简便的写法
var s = [1,2,3,4,5];
for (i in s[n|n mod 2 == 0]) {
System.out.println(i);
}
indexof 操作
在for代码块中可以用indexof 操作符,得到当前元素的下标。
package example;
import java.lang.System;
var nums = [1..5];
var numsExceptTheFirstTwo = nums[n|indexof n > 1]; // returns 3,4,5
for ( i in numsExceptTheFirstTwo) {
System.out.println("{indexof i}:{i}");
}
#javafxc sequence03.fx -d .
#javafx example.sequence03
0:3
1:4
2:5
数组增删改
insert:插入一个新元素
insert x into seq
insert x before seq[idx]
insert x after seq[idx]
delete:删除一个元素
delete seq
delete x from seq
delete seq[idx]
delete seq[a..b] // 删除一个片段
一个完整的例子:sequence04.fx
var nums = [1..5];
var x = 6;
insert x into nums; // result is [1,2,3,4,5,6]
x++;
insert x before nums[0]; // result is [7,1,2,3,4,5,6]
x++;
insert x after nums[3]; // result is [7,1,2,3,8,4,5,6]
// DELETE EXAMPLES
nums = [1..5];
delete 2 from nums; // result is [1,3,4,5]
delete nums[0];// result is [3,4,5]
nums = [1..10]; // result is [1,2,3,4,5,6,7,8,9,10]
delete nums[3..7]; // result is [1,2,3,9,10]
delete nums; // result is []
nums = [1..10];
delete nums[5..]; // result is [1,2,3,4,5]
delete nums[0..>]; // result is [5]
数组元素倒置:
var nums = [1..5];
reverse nums; // returns 5,4,3,2,1
数组
除了五种基本类型,JavaFx还提供了另外一个很常用的数据结构,数组。这个类型的英文名字为sequence,准确的说,不能翻译成数组,实际从行为上看更像是ArrayList。姑且称之为数组,并不影响理解。
定义格式:[...],用方括号括起来,逗号分隔的一串表达式值。
下面是两个简单的数组定义:
var weekDays = ["Mon","Tue","Wed","Thur","Fri"];
var days = [weekDays, ["Sat","Sun"]];
数组表示一串有序的对象。但是,数组本身跟其他对象是有区别的,这个体现在,数组不能嵌套。在上例中的days,在表达式中出现了嵌套的数组,会被自动平展开。比如上面例子中:
days == ["Mon","Tue","Wed","Thur","Fri","Sat","Sun"]; // returns true
数组是通过值来比较是否相等的,只有元素个数相等,且每一个元素也相等的时候,两个数组才被认为相等。
另外,有一个例外的地方,单个对象跟只有一个元素的数组是相等的,即:
1 == [1]; // returns true
数组类型的变量是通过[]来表示的,所以,数组会声明成这个样子:
var xs:Number[]; // Number 数组
var strs:String[]; // 字符串数组
数组元素可以通过下标来访问,这个跟Java的语法一样:
var wednesday = days[2];
为了方便书写,JavaFx提供了一个简便的方法,用".."来表示一个数字数组。就像这样:
var nums = [1..100];
var nums2 = [1..100 step 2];
[]操作符支持元素过滤,语法为:
数组[变量|逻辑表达式]
例如:
var nums = [1,2,3,4];
var numsGreaterThanTwo = nums[n|n > 2];
片段操作(slice),这个操作十分灵活,比较有用。
seq[a..b] // a, b 之间的元素,包括a,b
seq[a..<b] // a, b 之间的元素,包括a, 不包括b
seq[a..] // 跟 seq[a..<sizeof seq] 一样
seq[a..<] // 跟 seq[a..<sizeof seq-1] 一样
for 遍历
看一个简单的完整例子:sequence01.fx
package example;
import java.lang.System;
var seq1 = [1, 2, 'abc', 23.5, 3ms];
System.out.println(seq1);
for (it in seq1) {
System.out.println(it);
}
编译运行看结果:
#javafxc sequence01.fx -d .
#javafx example.sequence01
[ 1, 2, abc, 23.5, 3.0ms ]
1
2
abc
23.5
3.0ms
where 操作
可以在数组后面附带一个where语句,对数组元素遍历进行一个过滤条件的设置。看一段代码:sequence02.fx
package example;
import java.lang.System;
function factors(n:Number) {
return for (i in [1 .. n/2] where n mod i == 0) i;
}
for (i in factors(56)) {
System.out.println(i);
}
for表达式的值是每次循环的返回值所组成的一个数组,所以这里factors的返回值是一个数组,元素为符和整除56的条件。
#javafxc sequence02.fx -d .
#javafx example.sequence02
1.0
2.0
4.0
7.0
8.0
14.0
28.0
where的另一种比较简便的写法
var s = [1,2,3,4,5];
for (i in s[n|n mod 2 == 0]) {
System.out.println(i);
}
indexof 操作
在for代码块中可以用indexof 操作符,得到当前元素的下标。
package example;
import java.lang.System;
var nums = [1..5];
var numsExceptTheFirstTwo = nums[n|indexof n > 1]; // returns 3,4,5
for ( i in numsExceptTheFirstTwo) {
System.out.println("{indexof i}:{i}");
}
#javafxc sequence03.fx -d .
#javafx example.sequence03
0:3
1:4
2:5
数组增删改
insert:插入一个新元素
insert x into seq
insert x before seq[idx]
insert x after seq[idx]
delete:删除一个元素
delete seq
delete x from seq
delete seq[idx]
delete seq[a..b] // 删除一个片段
一个完整的例子:sequence04.fx
var nums = [1..5];
var x = 6;
insert x into nums; // result is [1,2,3,4,5,6]
x++;
insert x before nums[0]; // result is [7,1,2,3,4,5,6]
x++;
insert x after nums[3]; // result is [7,1,2,3,8,4,5,6]
// DELETE EXAMPLES
nums = [1..5];
delete 2 from nums; // result is [1,3,4,5]
delete nums[0];// result is [3,4,5]
nums = [1..10]; // result is [1,2,3,4,5,6,7,8,9,10]
delete nums[3..7]; // result is [1,2,3,9,10]
delete nums; // result is []
nums = [1..10];
delete nums[5..]; // result is [1,2,3,4,5]
delete nums[0..>]; // result is [5]
数组元素倒置:
var nums = [1..5];
reverse nums; // returns 5,4,3,2,1
相关文章推荐
- JavaFx中文入门教程--属性和函数
- JavaFx中文入门教程- 概述
- JavaFx中文入门教程--从Hello World开始
- JavaFx中文入门教程--JavaFx的数据类型
- JavaFx中文入门教程--JavaFx中的语句和表达式
- JavaFx中文入门教程--JavaFx操作符
- JavaFx中文入门教程--JavaFx中的类和对象
- Android入门中文教程
- jQuery中文入门指南,翻译加实例,jQuery的起点教程(一)
- 云星数据---Scala实战系列(精品版)】:Scala入门教程007-Scala数组详解006
- Numpy快速入门教程(二):数据类型,数组计算,Broadcasting机制
- Expression Blend实例中文教程(9) - 行为快速入门Behaviors
- Expression Blend实例中文教程(12) - 样式和模板快速入门Style,Template
- 【转:Keel】jQuery中文入门指南,翻译加实例,jQuery的起点教程
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮
- 转载:《TypeScript 中文入门教程》 5、命名空间和模块
- jQuery中文入门指南,翻译加实例,jQuery的起点教程
- Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard
- java入门教程-2.5Java数组的定义和使用
- ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布