1、Lua的算术操作符
Lua具有强大的数学计算能力,和其他语言不同的是,Lua支持将 实数 用于驱魔、指数等操作中
上面的运算式都能得到争取的结果,因此是非常方便的
特别要提到的就是对于取模操作的规则:
也就是计算的结果始终是与第二个数符号相同,特别用法如:
X%1 得到的是 X的小数部分
X-X%1 得到的就是整数部分
X-X%0.01 得到的就是精确到小数点后两位的结果
数学函数比如:
math.abs()
math.pi
2、关系操作符
Lua提供了如下的关系操作符
< > <= >= == ~=
得到的结果不是true就是false
①Lua会根据类型判断,如果类型不同,那么就是不等的
②nil只与自身相等
③== ~= 是用来比较相等和不等的,特别是 lua中不存在 != 这种不等关系操作符,要注意
④字符串是可以比较大小的,但是是根据字母的顺序
⑤不允许数值和字符串类型比较大小,Lua直接报错,防止用户书写不是想要的效果
3、逻辑操作符
逻辑操作符有 and or not ,和其他语言不同的是返回值问题
and 运算符来说 如果第一个操作数为假则返回第一个操作数,不然返回第二个操作数
or 第一个操作数为真返回第一个操作数,不然返回第二个操作数
print(4 and 5) -->5
print(nil and 13) -->nil
Lua 也是短路求值(Short-cut evaluation)的方法,只有需要的时候才会评估第二个操作数
有种写法:
等价于
上面的写法过于高科技,建议还是老实的书写 if else 的语句进行处理
4、字符串连接
print("Hello" .. " World")
print(0 .. 1)
强调下,Lua中的字符串是不可变的,每次连接也都是创建了一个新的字符串
a = "Hello"
print(a .. " World")
print(a) --> Hello
5、优先级问题
基本一致的优先级,二元运算符只有指数操作符 ^ 和 连接操作符 .. 是“右结合”的,其他的运算符都是“左结合”的。
6、table 构造式(table constructor)
构造式用于创建和初始化table的表达式,这个Lua特有的表达式,也是lua中最有用、最通用的机制之一。
最简单的构造式就是一个空的构造式 {} ,用于创建一个空的 table,当然构造式还可以用于初始化数组
days = {'sunday','monday'}
那么 days[1] 就是 sunday
相当于
通用的声明风格:(注意比较 上面的 x=10,y=20 的方式,这里更加通用)
1、关系比较中不等使用 != 进行比较的么?
答:不是滴,不存在这种关系操作符,只有 ~= 用来表示不等于。
2、table索引的下标开始和其他大部分语言一样,都是以0开始的么?
答:不是滴,这个比较特殊,大多数语言下标的确从0开始,但是lua确确实实是从1开始计算的,这个一定要注意和区分。
3、table非要用0开始索引怎么做?
答:手动指定吧, days = { [0]="sunday",monday} ,但是不建议这么做,大多数内置的函数都认为是从1开始的,会导致处理出问题。
阅读(2804) | 评论(0) | 转发(0) |