Seraph 4.0版本以后的新的脚本示例

4.0中,最重要的几大改如下:
- 允许数组相互直接赋值,并允许数组成为函数的参数。
- 允许在函数中调用后面声明的函数,即函数声明的先后与调用关系无关。使间接递归成为可能。
- 允许在定义了函数之后的脚本位置定义全局变量。这样USE子脚本中也可以声明全局变量了,使其功能可以更灵活。

以下分别对这几大改进举例说明
允许数组相互直接赋值,并允许数组成为函数的参数。

例1,数组相互直接赋值
function main
dim arr1[10]
arr1[1]=5
#将数组arr1整体COPY至arr2
arr2=arr1
#输出arr2[1]的值,应为5
Print(arr2[1])
end function

例2,数组作为参数

function fx(arr1, byref arr2)
Print(arr1[1])
#改变byref参数arr2中的某个元素的值
arr2[1]=10
end function

function main
dim arr1[10],arr2[10]
arr1[1]=5
fx(arr1, arr2)
#输出arr2[1]值。此值在fx函数中被改变,应输出10
Print(arr2[1])
end function

允许在函数中调用后面声明的函数,即函数声明的先后与调用关系无关。

function main
fx()
end function

#函数fx声明在main函数之后,同样可以被调用
function fx
Print("Hello")
end function

允许在定义了函数之后的脚本位置定义全局变量。

dim a
function fx
#a与b都是全局变量。即使b在后面才定义,也不影响它被前面声明的函数所调用
Print(a)
Print(b)
end function

dim b

function main
a=1
b=2
fx()
end function

技巧
利用这些新改进,在脚本中用USE来加载其他子脚本变的更强大。
我们知道,在脚本的任何位置,我们可以用
#USE 脚本名
来加载一个脚本的内容到当前位置。
之前由于dim定义只允许放在所有的函数定义之前,这使得在子脚本中放一些需要使用自定义的全局变量的函数变的很困难,特别是要USE多个这样的子脚本的时候。在4.0版本以后,这样的问题就解决了。

例:
主脚本内容:

function fx
end function

#use utils.ser

function main
#访问在子脚本中定义的全局变量
a=1
#访问在子脚本中定义的函数
myPrint()
end function

子脚本utils.ser内容:
dim a
function myPrint
Print(a)

(0)

相关推荐

  • Seraph 4.0版本以后的新的脚本示例

    4.0中,最重要的几大改如下:- 允许数组相互直接赋值,并允许数组成为函数的参数.- 允许在函数中调用后面声明的函数,即函数声明的先后与调用关系无关.使间接递归成为可能.- 允许在定义了函数之后的脚本位置定义全局变量.这样USE子脚本中也可以声明全局变量了,使其功能可以更灵活. 以下分别对这几大改进举例说明允许数组相互直接赋值,并允许数组成为函数的参数. 例1,数组相互直接赋值function maindim arr1[10]arr1[1]=5#将数组arr1整体COPY至arr2arr2=ar

  • Django 2.0版本的新特性抢先看!

    前言 2017年12月2日,Django官方发布了2.0版本,成为多年来的第一次大版本提升,那么2.0对广大Django使用者有哪些变化和需要注意的地方呢? 一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django 1.11.x是支持Python2.7的最后版本. 二.2.0新特性 1.简化了URL路由语法 django.urls.path()方法的语法更

  • webpack 4.0.0-beta.0版本新特性介绍

    近年来前端技术如雨后春笋般蓬勃发展,我们也在这个潮流下不断地学习.成长.前端技术的不断发展,给我们提供了许多的便利.例如:JSX的出现为我们提供了一个清晰.直观的方式来描述组件树,LESS/SASS的出现提高了我们书写css的能力,AMD/CommonJS/ES6 的出现为我们模块化开发提供了便利.然而,我们需要使用其它工具将这些工具转化成原生语言以运行在浏览器上.为了能够更好的将这些不同的资源整合到一起,我们就需要一个打包工具,webpack就是这个需求下的产物. webpack 可以看做是模

  • Nginx1.8.0版本平滑升级新版本1.9.7

    首先查看现在环境nginx的版本为1.8.0 编译的参数只指定了安装路径: 复制代码 代码如下: [root@localhost sbin]# ./nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) configure arguments: --prefix=/usr/local/nginx 平滑升级步骤如下: 下载nginx1.9.7版本,解压并进入解压后的目录 复制代

  • VMware14.0.0版本虚拟机安装Ubuntu16.04 LTS版本Linux系统图文教程

    VMware14.0.0 版本虚拟机安装Ubuntu16.04 LTS版本Linux系统多图详细步骤:一.前期准备工作 1.成功安装完成VMware14软件: 2.去Ubuntu官网下载Ubuntu16.0.4 LTS 版本的镜像文件. 二.安装步骤 1.打开VMware软件,选择<创建虚拟机>: 2.选择<自定义>,并点击<下一步>: 3.硬件兼容性选择<Workstation14.x>,并点击<下一步>: 4.选择<稍后安装操作系统&g

  • 详解Python 4.0 预计推出的新功能

    Python 3.8 发布在即,核心开发者团队让我总结一下最近讨论的 Python 4.0 预计推出的新功能,代码名为" Ouroboros:自噬蛇".Python 4.0 是大家翘首以盼的新版本,也将成为 Python 历史上的重大里程碑,在此感谢为之努力奋斗的 100 多名贡献者. 经过邮件列表上的论战,PEP8 里的一行 79 个字符的限制将增加至一行 89.5 个字符.IDE 用户终于可以充分利用 30" 超宽 4K 显示器的优势啦!这是我们对每行 100 个字符这一

  • mysql5.7及mysql 8.0版本修改root密码的方法小结

    mysql5.7版本: 方法1: 用SET PASSWORD命令 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for root@localhost = password('123'); mysql5.7和mysql8.0以上都可以用 方法2:用mysqladmin 格式:mysqladmin -u用户名 -p password 新密码 例子:mysqladmin -uroo

  • Vue高版本中一些新特性的使用详解

    一.深度作用选择器( >>> ) 严格来说,这个应该是vue-loader的功能."vue-loader": "^12.2.0" 在项目开发中,如果业务比较复杂,特别像中台或B端功能页面都不可避免的会用到第三方组件库,产品有时会想对这些组件进行一些UI方面的定制.如果这些组件采用的是有作用域的CSS,父组件想要定制第三方组件的样式就比较麻烦了. 深度作用选择器( >>> 操作符)可以助你一臂之力. <template>

  • vue-cli V3.0版本的使用详解

    vue-cli 3.0版本 目前官网上还不是3.0版本,所以需要在github上面学习使用:github网站:https://github.com/vuejs/vue-cli/tree/dev/docs 1.项目搭建 (1).在上面的GitHub网页中,拉到底部可以看到: 然后在全局中执行命令:sudo npm install -g @vue/cli即可. 最后, vue -V //可以查看到当前的vue是3.0版本了 (2).查看vue 相关指令 vue --help 查看到的常用指令: -V

  • MySQL 5.7及8.0版本数据库的root密码遗忘的解决方法

    注:MySQL5.7破解root密码,跳过密码认证登录到数据库,直接修改表中的密码即可,但是MySQL 8.0则不可以这样修改root密码,需要跳过密码认证登录到数据库后,先将root密码设置为空,然后才可以登录到数据库,修改root密码. 1.遗忘MySQL 5.7数据库的root密码解决办法 [root@mysql01 ~]# mysql --version #确定MySQL版本 mysql Ver 14.14 Distrib 5.7.28, for linux-glibc2.12 (x86

随机推荐