现在你的环境已经建立起来,是时候写你的第一个脚本了!这一节我们将通过编写一个简单的计算器程序来学习一些基本语法。这些实践带你了解:编译源代码、运行程序、声明变量、定义和触发函数、向函数传递参数、使用命令行参数。
Contents
- Writing a Simple Calculator
- Declaring Script Variables
- Defining and Invoking Script Functions
- Passing Arguments to Script Functions
- Returning Values from Script Functions
- Accessing Command-Line Arguments
Writing a Simple Calculator
写一个简单的计算器
首先点击
calculator.fx,并且保存到一个文档。文档应包含以下内容:
def numOne = 100;
def numTwo = 2;
var result;
add();
subtract();
multiply();
divide();
function add() {
result = numOne + numTwo;
println("{numOne} + {numTwo} = {result}");
}
function subtract() {
result = numOne - numTwo;
println("{numOne} - {numTwo} = {result}");
}
function multiply() {
result = numOne * numTwo;
println("{numOne} * {numTwo} = {result}");
}
function divide() {
result = numOne / numTwo;
println("{numOne} / {numTwo} = {result}");
}
JavaFX是一种编译语言,意味着在Java虚拟机运行它之前,你必须把源代码转化为字节码。
下面是编译脚本的命令:
javafxc calculator.fx
编译之后,你会发现一个名为calculator.class的字节码文件。你还会注意到另一个名为calculator$Intf.class的文件。它是运行程序所必须的:你可以忽略它,但不能删除它。
您现在可以用下面的命令运行编译后的class文件了。
javafx calculator
The output is:
结果如下:
100 + 2 = 102
100 - 2 = 98
100 * 2 = 200
100 / 2 = 50
这个程序虽然小,但体现了一些重要的语法结构。学习这些结构将是你熟练应用JavaFX的第一步。
注意:JavaFX语言并不难学,但因为你是新手,我们将仅限于讨论我们接触到的程序细节。目标很清晰。高级的用法将通过接下来的课程学习。
Declaring Script Variables
声明变量
让我们回顾一下calculator.fx,然后扩展它。
第一段定义了一些变量:
def numOne = 100;
def numTwo = 2;
var result;
变量用var或def关键字声明。它们的区别在于var变量可以被赋予新值,而def变量一旦赋值就保持不变。我们给numOne和numTwo赋值,但result变量未被初始化因为这个变量将保存计算结果。
变量名由字母和数字组成,不能以数字开头。约定俗成的惯例是采用小写字母;如果由多个单词组成,就像上面的例子一样,除第一个单词之外,其他单词的第一个字母大写。
注意:也许你已经注意到了,我们没有刻意声明这些变量是接受数字类型数据(与字符串或其他数据类型形成对照)的。编译器根据上下文聪明地识别出了您的意图。这被称作类型推导。类型推导使程序员的工作更轻松,因为它使程序员从声明数据类型的烦恼中解放出来。
Defining and Invoking Script Functions
定义和触发函数
接下来的源代码定义了两个数字相加、相减、相乘、相除4个函数:
function add() {
result = numOne + numTwo;
println("{numOne} + {numTwo} = {result}");
}
function subtract() {
result = numOne - numTwo;
println("{numOne} - {numTwo} = {result}");
}
function multiply() {
result = numOne * numTwo;
println("{numOne} * {numTwo} = {result}");
}
function divide() {
result = numOne / numTwo;
println("{numOne} / {numTwo} = {result}");
}
函数是用来完成特定功能的可执行的一段代码。在我们的例子中,每一个函数执行一种数学计算并且打印结果。写函数是使代码更易阅读、使用、调试的常用方法。函数体用大括号括起来,使它更易阅读。
函数直到被触发,才会执行函数体的代码。这使得你可以将它放置在程序的任何位置,函数调用在函数声明的前面或后面都无关紧要。在我们的例子中,就在声明的位置之前触发了函数。
The function invocations are as follows:
函数调用如下所示:
add();
subtract();
multiply();
divide();
Passing Arguments to Script Functions
向函数传递参数
接下来我们将修改calculator函数以接受参数。参数是触发函数时传入的特定值。这一步使calculator可以计算任意两个数字,而不只是硬编码在numOne和numTwo变量里的值。
var result;
add(100,10);
subtract(50,5);
multiply(25,4);
divide(500,2);
function add(argOne: Integer, argTwo: Integer) {
result = argOne + argTwo;
println("{argOne} + {argTwo} = {result}");
}
function subtract(argOne: Integer, argTwo: Integer) {
result = argOne - argTwo;
println("{argOne} - {argTwo} = {result}");
}
function multiply(argOne: Integer, argTwo: Integer) {
result = argOne * argTwo;
println("{argOne} * {argTwo} = {result}");
}
function divide(argOne: Integer, argTwo: Integer) {
result = argOne / argTwo;
println("{argOne} / {argTwo} = {result}");
}
The output of this script is now:
100 + 10 = 110
50 - 5 = 45
25 * 4 = 100
500 / 2 = 250
在这个版本里面我们去掉了不再需要的numOne和numTwo两个变量。修改函数定义使得两个数值作为参数可以传入。用一个参数名,一个冒号,和参数类型指定一个参数。多个参数用逗号间隔。
Returning Values from Script Functions
函数返回值
函数可以向触发它的代码返回一个值。例如,修改的相加函数可以成返回result值,粗体的文本显示了如何去做:
function add(argOne: Integer, argTwo: Integer) : Integer {
result = argOne + argTwo;
println("{argOne} + {argTwo} = {result}");
return result;
}
相加函数可以这样触发:
var total;
total = add(1,300) + add(23,52);
如果没有指定返回值,函数默认返回Void。
Accessing Command-Line Arguments
使用命令行参数
我们还可以修改calculator脚本使它可以使用命令行参数。这可以使最终用户在运行时指定要计算的数值。
var result;
function run(args : String[]) {
// Convert Strings to Integers
def numOne = java.lang.Integer.parseInt(args[0]);
def numTwo = java.lang.Integer.parseInt(args[1]);
// Invoke Functions
add(numOne,numTwo);
subtract(numOne,numTwo);
multiply(numOne,numTwo);
divide(numOne,numTwo);
}
function add(argOne: Integer, argTwo: Integer) {
result = argOne + argTwo;
println("{argOne} + {argTwo} = {result}");
}
function subtract(argOne: Integer, argTwo: Integer) {
result = argOne - argTwo;
println("{argOne} - {argTwo} = {result}");
}
function multiply(argOne: Integer, argTwo: Integer) {
result = argOne * argTwo;
println("{argOne} * {argTwo} = {result}");
}
function divide(argOne: Integer, argTwo: Integer) {
result = argOne / argTwo;
println("{argOne} / {argTwo} = {result}");
}
这个修改展示了一些新的结构,最显著的是新增的run函数。不像其他函数,run函数是一个担当脚本的主入口点的专用函数。run函数在args里保存了所有的命令行参数,args是一个字符串对象的序列(序列是对象的有序列表,类似于其他语言里的数组,在表达式和操作符这两节里有详细介绍)。
运行这个脚本,用户在运行时需要指定第一个和第二个数值:
javafx calculator 100 50
The output is now:
100 + 50 = 150
100 - 50 = 50
100 * 50 = 5000
100 / 50 = 2
注意:在先前的版本里,我们没有提供run函数。我们只是录入了一些代码,而它运行如常。这种情况下,编译器悄悄地创建了一个没有参数的run函数,并且把我们录入的要执行的代码放置了进去。
我们重新放置了numOne和numTwo变量,这一次用run函数包含了它们。calculator函数想得到数值类型,但命令行参数却是字符串类型;因此我们在使用它们之前必须将它们从字符串类型转换为数字类型。
// Convert Strings to Integers
def numOne = java.lang.Integer.parseInt(args[0]);
def numTwo = java.lang.Integer.parseInt(args[1]);
我们可以借助Java语言的帮助来实现类型转换。借助Java系统可以给这种简单的脚本语言带来极大的能力。
分享到:
相关推荐
这种方法虽然不常见,但在某些特定的工程环境下,如网络限制或临时数据传输需求时,通过WINCC编写脚本实现PLC间的数据交换是一种可行的解决方案。不过,通常情况下,直接在PLC之间建立通讯链路会更高效且稳定。
以下是关于Oracle DBA编写脚本的一些关键知识点: 1. **SQL*Plus基础**:SQL*Plus是Oracle提供的命令行工具,DBA常用来执行SQL查询和PL/SQL代码。了解其基本语法和命令,如`@`来运行脚本,`spool`用于输出重定向,...
在Abaqus中编写脚本是提高工作效率、自动化复杂任务以及创建定制功能的有效方式。脚本通常使用Python语言编写,因为Abaqus的脚本接口(ASI)是在Python应用程序的基础上开发的。本知识点将详细介绍Abaqus中的脚本...
在ABAQUS这一高级有限元分析软件中,编写脚本是一种高效且灵活的建模方法,尤其适用于自动化处理大量重复性的建模任务。本章节,"chapter 3_ABAQUS编写脚本快速建模_"将深入探讨如何利用ABAQUS的内置脚本语言——...
下面我们将详细探讨如何使用Nmap编写脚本以及相关的调试技巧。 ### 一、Nmap脚本调试 当使用自编脚本时遇到错误,Nmap提供了一个调试选项`-debug`来帮助我们定位问题。例如,运行命令`nmap -sV --script=demo -d ...
"编写脚本语言测试程序"这一主题涉及到多个方面的技术知识,包括脚本语言基础、IDispatch接口以及用户自定义的脚本编辑环境。接下来,我们将深入探讨这些关键知识点。 首先,脚本语言测试程序主要是为了解决在开发...
【作品名称】:基于MATLAB编写脚本并唤醒Maxwell执行程序 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 利用...
init.d编写脚本模板,编写完后直接使用service进行控制
编写脚本可以直接运行脚本更方便的使jar包启动、停止、重启、并查看jar包状态
Windows中编写脚本BAT批处理命令入门.pdf
magic-api 是一个接口快速开发框架,通过Web页面编写脚本以及配置,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象 特性 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQL...
如何编写脚本基础篇 .docx
如何编写脚本基础篇 .pdf
vbot: 自动化前端测试,无需编写脚本。基于JSON的视觉回归测试工具,特别适用于SPA或复杂的网络应用程序
Linux vim编写脚本自动加作者信息与备注,需要下载上传到用户家目录下,把.vimrc文件进行替换就可以了,使用需要在脚本文件后加.sh
vscode 一款很好用的编写脚本的工具 yaml shell 以及其他
fbconsole, 针对 facebook graph API编写脚本的微型API客户端 fbconsolefbconsole是用于 python 脚本的小型 Facebook API客户端。你可以使用 pip 安装 fbconsole:pip install fbconsole快速入门指南身份验证
【Python学习教程】编写脚本来压缩文件夹和文件以下是使用Python编写脚本来压缩文件夹和文件的步骤: 导入必要的模块 在开始编写代码之前,需要导入Python的zipfile模块,该模块提供了用于创建、读取和解压缩ZIP...
SecureCRT脚本编写方法,如何通过SecureCRT脚本编写脚本应用,简化手动操作流程