欢迎光临散文网 会员登陆 & 注册

【系列】潜水党的简单lua教程三

2023-06-14 02:38 作者:未晞_a  | 我要投稿

上一篇文章聊到过table和函数的基本写法。

这次便快速的讲一遍lua里的一些运算符,了解运算符很重要,因为之后地图内需要实现效果时,会依靠大量的运算符来实现算法公式。


加法公式:

num = 1+1

 -- 其中 + 就是加法运算符,num的结果等于2


减法公式:

num = 1 - 1

-- 其中 - 就是减法运算符,num的结果等于0


乘法公式:

num = 1 * 1

-- 其中 * 就是乘法运算符,num结果等于1


除法公式:

num = 1 / 1

-- 其中 / 就是除法运算符,num结果等于1


除了以上四种基本的加减乘除运算符以外,lua中还存在四种运算符。


取余:

num = 1 % 1 -- num结果等于0


既然1 % 1 = 0 ,那么取余到底是什么意思呢?

取余就是模运算,也是blizzard.j里面的< ModuloReal > or < ModuloInteger >函数。

bj里面的< ModuloInteger >函数写法是,被除数为a,除数为b

x = a - (a / b) * b

如果 x < 0 那么x = x + b

返回 x(取余)


但是在< ModuloReal >函数里多了一个步骤。

它修改了 x = a - (a / b) * b 

将其修改为 x = a - I2R(R2I(a / b)) * b


< R2I >函数是什么意思呢?转实数为整数,并且舍弃小数点后的数,不会进行四舍五入。

< I2R >函数是什么意思呢?转整数为实数。

这里并不是多此一举,之前说了,如果被除数无法被整除,那么整除后剩下的数便是取余数。

只有转实数为整数,才能确保获取的值绝对为整数,因此获得的取余数才是准确的。


可能有的朋友看不懂上面到底是什么意思,这里再做一个最简单不过的例子:


num = 13 % 5 -- num结果等于3


这个时候你会发现,num不再是零,但它为什么等于3呢?


这里写两个简单的公式:

13 / 5 = 2.6 -- 结果:13无法被5整除

10 / 5 = 2 -- 结果:10可以被5整除


那么10和13有什么区别呢?区别就在于多出来的3无法被5整除。

所以了,无法被整除的数,就是取余的值。

实数取余也是如此,取余的规则并不会因为你用的数不同而产生变化。


乘幂:

num = 1 ^ 1 -- 结果num等于1


乘幂里面 1 ^ 1 结果依然是1,那么乘幂的意思是什么呢?

如果把乘幂叫做乘方、次方,是不是就熟悉多了呢?

以下是关于次方的一些规则:

1的次方等于1

1的任何次方依然是等于1

1的零次方等于1

任何数的零次方都等于1


乘幂的定义:设a为任意数,n为正整数,a的n次方表示为aⁿ,表示n个a连乘所得之结果。

例:

x = 2 ^ 10 

x = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2

x = 4 * 4 * 4 * 4 * 4

x = 1024


负号:

num = -1 -- 结果num等于-1

任何数加上负号,都会是返回负数。


整除:

num = 13 // 5 -- 结果num等于2

整除的概念已经在取余中提到,这里就不多做赘述。

不过这里的整除运算符需要提到的一点是,// 在大多数的程序语言里面,都是作为注释符号出现的,而lua里面的注释符号是--


关系运算符:

== :等于,检测两个值是否相等,相等返回 true,否则返回 false

例:1 == 2 返回否(false)


~= :不等于,检测两个值是否相等,不相等返回 true,否则返回 false

例:1 ~= 2 返回真(true)

这里需要说明的是,在其他程序语言里,不等于大多数为!=

而lua里面不等于是~=


> :大于,如果左边的值大于右边的值,返回 true,否则返回 false

例:1 > 2 返回否(false) 


< :小于,如果左边的值大于右边的值,返回 true,否则返回 false

例:1 < 2 返回真(true)


>= :大于,如果左边的值大于右边的值,返回 true,否则返回 false

例:1 >= 2 返回否(false) 


<= :小于,如果左边的值大于右边的值,返回 true,否则返回 false

例:1 <= 2 返回真(true)


逻辑运算符:

and :左右条件均成立时,返回真(true),否则返回否(false)

or :左右任意一个条件成立时,返回真(true),否则返回否(false)


not :相反条件成立时,返回真(true),否则返回否(false)

例:not(true)== false, not(false) == true


其他运算符:

.. :连接两个字符串

例:‘王大锤’..‘家里着火’, 输出结果为王大锤家里着火


# :返回字符串或table的长度

例:#‘abc’,输出结果为3

【系列】潜水党的简单lua教程三的评论 (共 条)

分享到微博请遵守国家法律