lua语言——特殊用法

简介: lua语言——特殊用法

多变量赋值

a,c,d="1",13,true
print(a)--1
print(c)--13
print(d)--true
--多变量赋值时,如果值的个数不够变量的个数,变量为空
a,c,d="1",13
print(a)--1
print(c)--13
print(d)--nil
--多变量赋值时,如果值的个数多了,值会自动舍弃,只会有几个变量赋几个值
a,c,d="1",13,14,17
print(a)--1
print(c)--13
print(d)--14


and和or

我们知道and是取与,与就是0 and 0 = 0、0 and 1 = 0、1 and 1 = 1,也就是说有一个为0值就为0,全为1表达式值才为1,所以,当and的第一个操作数为0的时候,我们就没有必要看后面的操作数了,此时表达式的值已经为0,我们就把第一个为0的操作数返回即可;如果第一个操作数为1,那么整个表达式的值就取决于第二个操作数了,第二个为0表达式值为0,第二个为1表达式值为1,所以因为第二个操作数是啥表达式值就是啥,那么我们就把第二个操作数返回就行了。

or是取或,或就是0 or 0 = 0、0 or 1 = 1、1 or 1 = 1,也就是说有一个为1值就为1,全为0表达式值才为0,所以,当or的第一个操作数为1的时候,我们就没有必要看后面的操作数了,此时表达式的值已经为1,我们就把第一个为1的操作数返回即可;如果第一个操作数为0,那么整个表达式的值就取决于第二个操作数了,第二个为0表达式值为0,第二个为1表达式值为1,所以因为第二个操作数是啥表达式值就是啥,那么我们就把第二个操作数返回就行了。

print(1 and 3)--3
print(1 and nil)--nil,有假则假
print(1 or 3)--1,有真则真
print(1 or nil)--1
print(nil or false)--false


三目运算

Lua 原生的语义并没有实现三目运算,一般是通过逻辑运算符 and 和 or 来模拟三目运算符的。Lua 中 and 和 or 都使用"短路求值(short_cur evaluation)",也就是说,它们只会在需要时才去评估第二个操作数。

local a, b, ret;
ret = a > b and a or b

穷举所有可能性:

a > b 时:

a > b and a –> true 
a or b –> a

a <= b时:

a > b and a –> false 
a or b –> b


三目运算符

x=3
y=4
--返回最大的那个值
local result=(x>y) and x or y
print(result)--4
-- 解析
--[[
(x>y) and x--->(x>y)
(x>y) or y----->y
result=4
]]


目录
相关文章
|
存储 缓存 自然语言处理
小刚带你深入浅出理解Lua语言
前言这篇文章并不是针对某个知识点深入剖析,而是聚焦在Lua语言的关键知识点覆盖和关键使用问题列举描述。能够让学习者对Lua整体有个认识(使用一门新的语言不仅仅在用的时候适应它,而是知道怎么善于使用它),同时也可以作为一个工具文档在Lua中遇到具体问题的时候能从这里索引到相应的知识点和Lua的一些原理,得到启发。 1、Lua语言的特点简单的说Lua语言是一个可扩展的嵌入型的脚本语言。它具有以下的特点
小刚带你深入浅出理解Lua语言
lua语言——协同程序(协程)
lua语言——协同程序(协程)
105 0
|
存储
lua语言——多脚本执行
lua语言——多脚本执行
217 0
|
索引 容器
lua语言——迭代器
lua语言——迭代器
105 0
|
Java 索引
Lua语言——table(表)
Lua语言——table(表)
127 0
|
C语言 索引
lua语言——函数
lua语言——函数
117 0
lua语言——循环
lua语言——循环
90 0
lua语言——条件分支语句
lua语言——条件分支语句
175 0
Lua语言——运算符
Lua语言——运算符
108 0
lua语言——字符串操作
lua语言——字符串操作
217 0