Lesson 5: Sequences
目录
- 创建序列
- 使用布尔表达式创建序列
- 访问序列的元素
- 向序列里插入项
- 从序列里删除项
- 倒序序列里的项
- 比较序列
- 使用序列片段
-创建序列
除了5种最基本的数据类型。JavaFX脚本语言还提供了链式数据结构。序列表示一组有序的对象,序列里面的对象称为项。序列以‘[]’定义,每个项之间以逗号隔开。
一种创建序列的方法就是直接列出序列里面的项即可。每一个元素以逗号隔开,且放在[]之间。如下:
var weekDays = ["Mon","Tue","Wed","Thu","Fri"];
声明一个序列然后赋给weekDays变量。编译器知道我们是要创建字符串序列,因为每个项都是定义为字符串类型。 如果序列里面声明的是整数类型(var nums = [1,2,3];)编译器知道我们需要的是整数序列。
你也可以给序列一个特定的类型。
var weekDays: String[] = ["Mon","Tue","Wed","Thu","Fri"];
这么定义,告诉编译器weekDays接受一系列的String
序列里面还能定义序列
var days = [weekDays, ["Sat","Sun"]];
在这样的情况下,编译器会自动的平坦化序列,即转化为如下形式:
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
还有一种简短的方法来创建连续的数字。要创建1到100的序列,使用如下方法:
var nums = [1..100];
-使用布尔表达式创建序列
你能使用布尔表达式或者断言(predicate)来声明一个已存在的序列的子序列。例如,对于下面的序列:
var nums = [1,2,3,4,5];
接着,以第一个序列里面的项为基础,创建第二个序列,此序列只包含大于2的项。创建方法如下:
var numsGreaterThanTwo = nums[n | n > 2];
上面的表达式可以用语言描述为:“从num序列里选出所有大于2的项,然后将这些项赋给numsGreaterThanTwo序列”。("select all items from the num sequence where the value of an item is greater than 2 and assign those items to a new sequence called numsGreaterThanTwo),"where"后面的
"the value of an item is greater than 2"就是断言(predicate)
在这段代码里面:
1. 新创建的序列存放在numsGreaterThanTwo里面。
2. 代码: nums[n | n > 2];指定了源序列。在例子里面,nums就是已经存在的序列。
3. 遍历num里面的所有项,当表达式为true的时候,就返回这个项,由返回的所有项,创建一个新的序列。
4. 符号 "|"是用来分割变量n和后面的代码的。
5. 代码: nums[n | n > 2];定义了一个布尔表达式,它是是否要把原来序列里面的项拷贝到现在的序列里面去的一个衡量标准。
-访问序列元素
序列里的项可以通过下标来访问,从0开始。要访问一个元素,以序列的名字,后面跟"[元素的索引]"即可:
var 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
你还可以使用sizeof操作符后面跟上序列的名字来得到序列的长度:
sizeof days
下面的代码,打印7:
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
println(sizeof days);
-向Sequence里插入项
insert关键字允许你向序列里的一个特定元素的前面或后面插入一个元素。
Note:事实上,序列是不变的。这意味着序列一旦被创建就不会改变。举个例子,当你插入或删除一项时,在此操作后,会创建一个新的序列并且这个序列会被赋给原来那个变量。
让我们来重新创建days序列,来证明一下:
var days = ["Mon"];
这里,这个sequence只包含一个元素 "Mon".
我们可以使用insert和into关键字在序列的最后插入"Tue"。
insert "Tue" into days;
类似的,我们添加 "Fri", "Sat"和"Sun"。
insert "Fri" into days;
insert "Sat" into days;
insert "Sun" into days;
现在序列就包含了: "Mon", "Tue", "Fri", "Sat", and "Sun".
我们还可以使用insert和before关键字在给定的索引所指定的元素前面插入一项。记住,索引以0开始,所以"Fri"的索引是2.所以我们能够像下面这样在"Fri"前面插入"Thu".
insert "Thu" before days[2];
现在序列包含了: "Mon", "Tue", "Thu", "Fri", "Sat", and "Sun".
在"Wed"后面插入"Tue",我们能使用insert和after关键字:
insert "wed" after days[1];
现在序列包含了一周的所有天: "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", and "Sun".
-从序列里删除项
delete和from关键字使得从序列里面删除项变得很简单。
delete "Sun" from days;
现在序列包含:"Mon", "Tue", "Wed", "Thu", "Fri", and "Sat".
你还可以删除一个特定索引的元素。下面的代码将从序列里面删除"Mon"(记住"Mon"是第一个元素,他的索引是0)
delete days[0];
要删除序列里的所有项,使用delete跟上序列的名字即可:
delete days;
注意,delete只是把项从序列里面移走;它不会删除days这个变量。你还能够访问days变量,并向里面添加值。
-倒序序列里的项
你可以使用reverse操作符来倒序序列:
var nums = [1..5];
reverse nums; // returns [5, 4, 3, 2, 1]
-比较序列
有时你可能会要比较序列是否相等。序列是按值来比较的:如果长度相同,里面的项也相同,那么他们就是相等的。
让我们来测试一下:
var seq1 = [1,2,3,4,5];
var seq2 = [1,2,3,4,5];
println(seq1 == seq2);
表达式seq1 == seq2将为true,因为序列拥有相同个数的项,且每个项的值都相同。所以,这段代码将打印true.
修改其中一个序列的项的个数,他们就不相同了:
var seq1 = [1,2,3,4,5];
var seq2 = [1,2,3,4,5,6];
println(seq1 == seq2);
这里输出"flase",因为第二个序列比第一个序列长,所以两序列不相等。
我们还能通过修改项的值来使两个序列不相等,即使两个序列的长度仍然相等:
var seq1 = [1,2,3,4,5];
var seq2 = [1,3,2,4,5];
println(seq1 == seq2);
代码将会还是打印"false",因为两个序列不等。
-使用序列片段
序列片段提供访问序列的一部分的功能。
seq[a..b]
这段语法将访问索引a和索引b之间的所有的元素。下面的脚本创建了一个只包含"Sat"和"Sun"的表示周末的序列。
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
var weekend = days[5..6];
seq[a..<b]
在索引a和b之间,且靠近b的地方使用"<",将不包含索引b。我们可以用这个创建"Mon" 到"Fri"的表示工作日的序列。
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
var weekdays = days[0..<5];
seq[a..]
省略第二个索引,你能够访问从索引a到最后的所有项!举同样的例子,我们可以像下面这样创建表示周末的序列:
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
var weekend = days[5..];
seq[a..<]
最后,你能够使用"<"而不需要第二个索引,来访问序列a后面的,除了最后一项之外的所有项。
var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
var days2 = days[0..<];
这里创建一个包含从 "Mon" 到 "Sat"的序列。
分享到:
相关推荐
这个压缩包文件“学习JavaFX脚本语言_翻译_.pdf”显然是一个关于JavaFX编程的中文教程,对于想要深入理解JavaFX的人来说,这是一个宝贵的资源。 JavaFX最初是Sun Microsystems开发的,后来被Oracle收购并继续发展。...
学习JavaFX脚本语言,你需要掌握如何声明和操作对象,以及如何利用它的图形和动画功能创建动态用户界面。随着对JavaFX深入的理解,你可以创建出交互性强、视觉效果丰富的应用程序。而要更进一步,还可以学习如何编写...
3. **bin**: 这个目录通常包含可执行文件和脚本,如JavaFX的编译器`javac`和链接器`javafxpackager`。这些工具允许开发者编译和打包JavaFX应用程序,使其可以在不同平台上运行。 4. **src**: 可能包含了示例代码或...
深入学习JavaFX脚本语言,意味着我们将探讨其语法、特性以及如何利用它来构建动态的应用程序。 JavaFX最初引入了一种名为JavaFX Script的专用脚本语言,但后来在JavaFX 2.0中,JavaFX Script被Java API所取代,使得...
JavaFX是Oracle公司推出的一种用于创建富互联网应用程序(RIA)的平台,它允许开发者使用JavaFX脚本语言或Java编程语言来构建具有丰富图形界面的应用程序。JavaFX 1.2是该技术的一个早期版本,提供了许多创新特性,...
在开始学习 JavaFX Script 编程语言之前,需要在系统上安装 JDK 6 或 JDK 5,然后再继续学习本教程。 knowledge point 1: 安装 JDK 在学习 JavaFX Script 编程语言之前,需要在系统上安装 JDK 6 或 JDK 5。这是...
javafx语言中文教程,内附代码,有助于学习理解!
1. JavaFX Script:JavaFX 的脚本语言,用于开发 JavaFX 应用程序。 2. JavaFX API:JavaFX 的应用程序编程接口,用于开发 JavaFX 应用程序。 3. JavaFX Graphics:JavaFX 的图形编程接口,用于开发 JavaFX 应用程序...
本教程将指导您从基础知识开始学习JavaFX脚本语言。 JavaFX概述 JavaFX是一种新的脚本语言,由Sun Microsystems开发,用于开发RIA。JavaFX脚本语言基于Java平台,可以在Java虚拟机(JVM)上运行。JavaFX的主要特点...
《深入学习JavaFX脚本编程语言》:现代GUI应用程序开发的高效工具 一、JavaFX脚本编程语言概述 JavaFX脚本编程语言是专为创建具有现代化图形用户界面(GUI)的应用程序而设计的一种高级编程语言。它以其声明式的...
JavaFX Script是一种基于Java的脚本语言,它结合了Java的强大特性和动态脚本语言的灵活性。JavaFX Script最初由Sun Microsystems于2007年的JavaOne大会上发布,并被视为构建丰富内容应用程序的关键工具之一。它提供...
Oracle宣布停止对JavaFX脚本语言的支持,并将JavaFX的部分API集成到Java标准库中,使得JavaFX成为开发跨平台富客户端应用的理想选择。 - **JavaFX2.0新特性**: - **API整合**:将原有的JavaFX脚本API集成到了Java...
- JavaFX应用程序可以使用Java、Kotlin、Scala等JVM语言编写,也可以用Scene Builder设计界面布局。 2. **JavaFX中的节点(Node)**: - 节点是JavaFX图形场景图的基本构建块,包括按钮、文本框、图像视图等。 -...
JavaFX Script是Oracle公司推出的一种用于创建富互联网应用程序(RIA)的脚本语言,它专门设计用来构建桌面和Web上的图形用户界面。虽然JavaFX Script的流行度在JavaFX后来转向Java语言API后逐渐降低,但它依然为...
为了满足这些需求,Sun Microsystems 推出了 JavaFX Script,这是一种专为创建丰富的互联网客户端应用程序而设计的动态脚本语言。本文将基于提供的文档信息对 JavaFX Script 的核心概念、优势以及应用场景进行深入...
对于Swing程序员来说,学习JavaFX Script 可以拓宽他们的技能范围,为他们提供更现代的UI开发工具。Swing虽然功能强大,但在视觉效果和交互性上可能略显传统,而JavaFX Script 则提供了更先进的解决方案。 这个...
1. **高生产力的脚本语言**:JavaFX脚本语言设计得易于学习且表达能力强,支持声明式的编程风格,使得开发者可以专注于应用程序逻辑而非底层实现细节。 2. **静态类型**:虽然JavaFX脚本语言采用了类似脚本语言的...
学习JavaFX Script的最佳起点是官方提供的教程,该教程详细介绍了JavaFX Script的核心概念和语言语法。通过这个教程,开发者可以逐步掌握JavaFX Script的基础知识,并进一步了解如何构建图形用户界面(GUI)应用程序...
10. **使用脚本语言**:如果需要,可以通过绑定和表达式在FXML中使用Java脚本来增强功能。 11. **使用样式表**:应用CSS样式表,以实现自定义的视觉效果和主题。 通过以上步骤,我们将能够完全理解如何使用FXML来...
- **Oracle 接手**:Oracle 收购 Sun 后,在 2010 年 JavaOne 大会上宣布将停止对 JavaFX 脚本语言的支持,并将 JavaFX 的 API 导入 Java,这意味着 Java 开发者无需学习新的脚本语言即可利用 JavaFX 的功能。...