数据类型
Number类型
: 数字类型,支持四种类型,分别是long,double,java.math.BigInteger(简称 big int)和java.math.BigDecimal(简 称 decimal),规则如下:
big int类型
: 任何以大写字母 N 结尾的整数都被认为是 big int
decimal类型
: 任何以大写字母 M 结尾的数字都被认为是 decimal
Long类型
: 其他的任何整数都将被转换为 Long
Double类型
: 其他任何浮点数都将被转换为 Double
String类型
: 字符串类型,单引号或者双引号括起来的文本串,如’hello world’, 变量如果传入的是String或者Character也将转为String类型
Bool类型
: 常量true和false,表示真值和假值,与 java 的Boolean.TRUE和Boolean.False对应
Pattern类型
: 正则表达式, 以//括起来的字符串,如/\d+/,内部 实现为java.util.Pattern
变量类型
: 与 Java 的变量命名规则相同,变量的值由用户传入
nil类型
: 常量nil,类似 java 中的null,但是nil比较特殊,nil不仅可以参与==、!=的比较, 也可以参与>、>=、<、<=的比较,Aviator 规定任何类型都大于nil除了nil本身,nil==nil返回true。 用户传入的变量值如果为null,那么也将作为nil处理,nil打印为null
超过 long 范围的整数字面量都将自动转换为 big int 类型
其中 big int 和 decimal 是 2.3.0 版本开始引入的。数字还支持十六进制(以0x或者0X开头的数字), 以及科学计数法,如1e-3等。 不支持其他进制。
操作符
算术运算符
Aviator 支持常见的算术运算符,包括+
-
*
/
%
五个二元运算符,和一元运算符-
(负)。
其中-
*
/
%
和一元的-仅能作用于Number类型。
+
不仅能用于Number类型,还可以用于String的相加,或者字符串与其他对象的相加。
Aviator 规定,任何类型与String相加,结果为String。
逻辑运算符
Avaitor 的支持的逻辑运算符包括,一元否定运算符!
,以及逻辑与的&&
,逻辑或的||
。逻辑运算符的操作数只能为Boolean。
&&
和||
都执行短路规则。
关系运算符
Aviator 支持的关系运算符包括<
, <=
,>
, >=
以及==
和!=
。
关系运算符可以作用于Number之间、String之间、Pattern之间、Boolean之间、变量之间以及其他类型与nil
之间的关系比较, 不同类型除了nil之外不能相互比较。
位运算符
Aviator 支持所有的 Java 位运算符,包括&
, |
, ^
, ~
, >>
, <<
, >>>
。
匹配运算符
匹配运算符=~
用于String和Pattern的匹配,它的左操作数必须为String,右操作数必须为Pattern。 匹配成功后,Pattern的分组将存于变量$num,num为分组索引。
三元运算符
Aviator 没有提供if else语句,但是提供了三元运算符?:
,形式为bool ? exp1: exp2
。 其中bool必须为Boolean类型的表达式, 而exp1和exp2可以为任何合法的 Aviator 表达式,并且不要求exp1和exp2返回的结果类型一致。
参考资料
- https://blog.youkuaiyun.com/fgyibupi/article/details/107043615