`
treemp3
  • 浏览: 23830 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

编写脚本

阅读更多
现在你的环境已经建立起来,是时候写你的第一个脚本了!这一节我们将通过编写一个简单的计算器程序来学习一些基本语法。这些实践带你了解:编译源代码、运行程序、声明变量、定义和触发函数、向函数传递参数、使用命令行参数。

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系统可以给这种简单的脚本语言带来极大的能力。
分享到:
评论

相关推荐

    如何在STEP7 WINCC中编写脚本实现2个PLC之间的数据交换?.docx

    这种方法虽然不常见,但在某些特定的工程环境下,如网络限制或临时数据传输需求时,通过WINCC编写脚本实现PLC间的数据交换是一种可行的解决方案。不过,通常情况下,直接在PLC之间建立通讯链路会更高效且稳定。

    针对Oracle DBA讲座的如何编写脚本

    以下是关于Oracle DBA编写脚本的一些关键知识点: 1. **SQL*Plus基础**:SQL*Plus是Oracle提供的命令行工具,DBA常用来执行SQL查询和PL/SQL代码。了解其基本语法和命令,如`@`来运行脚本,`spool`用于输出重定向,...

    在Abaqus_中编写脚本

    在Abaqus中编写脚本是提高工作效率、自动化复杂任务以及创建定制功能的有效方式。脚本通常使用Python语言编写,因为Abaqus的脚本接口(ASI)是在Python应用程序的基础上开发的。本知识点将详细介绍Abaqus中的脚本...

    chapter 3_ABAQUS编写脚本快速建模_

    在ABAQUS这一高级有限元分析软件中,编写脚本是一种高效且灵活的建模方法,尤其适用于自动化处理大量重复性的建模任务。本章节,"chapter 3_ABAQUS编写脚本快速建模_"将深入探讨如何利用ABAQUS的内置脚本语言——...

    nmap编写脚本1

    下面我们将详细探讨如何使用Nmap编写脚本以及相关的调试技巧。 ### 一、Nmap脚本调试 当使用自编脚本时遇到错误,Nmap提供了一个调试选项`-debug`来帮助我们定位问题。例如,运行命令`nmap -sV --script=demo -d ...

    编写脚本语言测试程序

    "编写脚本语言测试程序"这一主题涉及到多个方面的技术知识,包括脚本语言基础、IDispatch接口以及用户自定义的脚本编辑环境。接下来,我们将深入探讨这些关键知识点。 首先,脚本语言测试程序主要是为了解决在开发...

    基于MATLAB编写脚本并唤醒Maxwell执行程序

    【作品名称】:基于MATLAB编写脚本并唤醒Maxwell执行程序 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 利用...

    init.d编写脚本模板

    init.d编写脚本模板,编写完后直接使用service进行控制

    编写启动jar包的Linux脚本

    编写脚本可以直接运行脚本更方便的使jar包启动、停止、重启、并查看jar包状态

    Windows中编写脚本BAT批处理命令入门.pdf

    Windows中编写脚本BAT批处理命令入门.pdf

    magic-api是一个接口快速开发框架,通过Web页面编写脚本以及配置,自动映射为HTTP接口,无需定义.rar

    magic-api 是一个接口快速开发框架,通过Web页面编写脚本以及配置,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象 特性 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQL...

    vbot自动化前端测试无需编写脚本

    vbot: 自动化前端测试,无需编写脚本。基于JSON的视觉回归测试工具,特别适用于SPA或复杂的网络应用程序

    vimrc Linux vim编写脚本自动加作者信息与备注

    Linux vim编写脚本自动加作者信息与备注,需要下载上传到用户家目录下,把.vimrc文件进行替换就可以了,使用需要在脚本文件后加.sh

    fbconsole, 针对 facebook graph API编写脚本的微型API客户端.zip

    fbconsole, 针对 facebook graph API编写脚本的微型API客户端 fbconsolefbconsole是用于 python 脚本的小型 Facebook API客户端。你可以使用 pip 安装 fbconsole:pip install fbconsole快速入门指南身份验证

    【Python学习教程】编写脚本来压缩文件夹和文件

    【Python学习教程】编写脚本来压缩文件夹和文件以下是使用Python编写脚本来压缩文件夹和文件的步骤: 导入必要的模块 在开始编写代码之前,需要导入Python的zipfile模块,该模块提供了用于创建、读取和解压缩ZIP...

    SecureCRT脚本编写方法

    SecureCRT脚本编写方法,如何通过SecureCRT脚本编写脚本应用,简化手动操作流程

    热爱脚本编写脚本还不详细吗

    测试脚本,测试传输文件用,写的算详细了吧

    genesis2000脚本编写教程

    编写脚本时,调试技巧必不可少。学会使用日志、断点和调试器可以有效地定位和修复错误。此外,了解如何优化脚本以提高运行速度也是至关重要的。 九、案例分析 在教程中,可能会包含一系列实例,从简单的单个神经元...

    genesis2000脚本编写易语言模块接口

    《genesis2000脚本编写与易语言模块接口详解》 在计算机编程领域,接口设计是连接不同组件的关键,而“genesis2000脚本编写易语言模块接口”正是这样一个实例,它展示了如何使用易语言来创建与genesis2000脚本交互...

Global site tag (gtag.js) - Google Analytics