IVRScript脚本语言简介
IVRScript
是一种用于创建内容的高级、动态类型的编程语言。它使用类似于Python
的语法(块基于缩进,许多关键字相似)。
IVRScript
是一种动态类型语言。因此,它的主要优点是:
- 这种语言简单易学。
- 大多数代码都可以快速地编写和更改, 而且没有任何麻烦。
- 编写更少的代码意味着要修复的错误和失误更少。
- 更容易阅读代码(减少混乱)。
- 测试不需要编译。
- 运行时(Runtime)很小。
- 本质上是鸭子类型和多态性。
标识符
标识符指的是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名。任何仅限于字母字符(a
到z
和A
到Z
),数字(0
到9
)和_
的字符串都可以作为标识符。此外,标识符不能以数字开头。标识符区分大小写。
关键字
以下是该语言支持的关键字列表。由于关键字是保留字(记号),它们不能用作标识符。操作符(如 in、not、and、or)以及内置类型的名称也是保留的。
关键字 | 描述 |
---|---|
if | 参见 if/else/elif |
elif | 参见 if/else/elif |
else | 参见 if/else/elif |
for | 参见 for |
while | 参见 while |
match | 参见 match |
break | 退出当前for 或while 循环的执行 |
continue | 立即跳到for 或while 循环的下一个迭代 |
pass | 在语法上要求语句在不希望执行代码的地方使用, 例如在空函数中 |
return | 从函数返回一个值 |
class | 定义一个内部类 |
class_name | 为脚本定义类名称和可算图标 |
extends | 定义用当前类扩展什么类 |
is | 测试变量是否扩展给定的类, 或者是否是给定的内置类型 |
as | 如果可能, 将值转换为给定类型 |
self | 引用当前的类实例 |
tool | 在编辑器中执行脚本 |
signal | 定义信号 |
func | 定义函数 |
static | 定义静态函数。不允许静态成员变量 |
const | 定义常量 |
enum | 定义枚举 |
var | 定义变量 |
onready | 一旦脚本附加到的节点及其子级成为场景树的一部分, 就初始化变量。参见 onready |
export | 保存一个变量及其附加资源,并使其在编辑器中可见和可修改。参见 export |
setget | 为变量定义setter和getter函数。参见 setget |
breakpoint | 调试器断点的编辑器助手 |
preload | 预加载一个类或变量。参见preload |
yield | 协程支持。参见yield |
assert | 断言条件,如果失败则记录错误。在非调试版本中被忽略。 |
remote | 网络RPC注解 |
master | 网络RPC注解 |
puppet | 网络RPC注解 |
remotesync | 网络RPC注解 |
mastersync | 网络RPC注解 |
puppetsync | 网络RPC注解 |
PI | 圆周率常量 |
TAU | TAU常量 |
INF | 无穷大常数,用于比较 |
NAN | NAN(不是一个数字)常数。用于比较 |
运算符
下面是支持的运算符列表及其优先级(越上面越高)。
Operator | Description |
---|---|
x[index] | 数组索引(最高优先级) |
x.attribute | 属性引用 |
foo() | 函数调用 |
is | 实例类型检查 |
~ | 按位取反 |
-x | 负/一元否定 |
* / % | 乘法/除法/余数,这些运算符的行为与C++相同。 整数除法会被截断,而不是返回小数。 %运算符适用于ints("fmod "适用于floats), 并另外用于格式化字符串Format Strings |
+ | 加法/数组的串联 |
- | 减法 |
<< >> | 位移位 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
< > == != >= <= | 比较 |
in | 内容测试 |
! not | 布尔非 |
and && | 布尔与 |
or || | 布尔或 |
if x else | 三元if/else |
as | 类型转换 |
= += -= *= /= %= &= |= <<= >>= | 赋值(最低优先级) |
注释
任何从#
开始到行尾的内容都会被忽略,并被是为注释。
# 这是一个注释