文档章节

Lua 笔记--表达式

_子墨
 _子墨
发布于 2014/12/27 03:20
字数 569
阅读 60
收藏 0

        表达式用于表示值。Lua的表达式中可以包含数字常量、字面字符串、变量、一元和二元操作符及函数调用。另外有别于传统的是,表达式中还可以包括函数定义和table构造式。

        Lua支持常规的算术操作符有:二元的+、-、*、/、^、%,及一元 - (负号)。取模操作符计算结果的符号永远与第二个参数相同。

        Lua提供的关系操作符有:>、<、>=、<=、==、~=。所有这些操作符的运算结果都是true或false。

        逻辑操作符有and、or 和not 。与条件控制语句一样,所有的逻辑操作符将false 和nil 视为假,其他视为真。对于操作符and 来说,如果它的第一个操作数为假,就返回第一个操作数,不然返回第二个操作数。对于操作符or 来说,如果它的第一个操作数为真,就返回第一个操作数,不然返回第二个操作数。

print(4 and 5)        -->5
print(nil and 3)      -->nil
print(false and 3)    -->false
print(4 or 5)         -->4
print(false or 5)     -->5

print(not nil)        -->true
print(not false)      -->true
print(not 0)          -->false
print(not not nil)    -->false

        要在Lua中连接两个字符串,可以使用操作符“.."(两个点)。如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串:

print("Hello ".."World")        -->Hello World
print(0 ..1)                    -->01

        请记住,Lua中的字符串是不可变的值。连接操作符只会创建一个新的字符串,而不会对其原操作数进行任何修改。

        Lua操作符的优先级如下所示(从高到低):

^
not # -(一元负号)
* / %
+ -(二元减号)
..
< > <= >= ~= ==
and
or

        在二元操作符中,除了指数操作符”^“和连接操作符”..“是”右结合“的,所有其他操作符都是”左结合“的。

        构造式是用于创建和初始化table的表达式。

days = {"M", "T", "W", "T", "F", "S"}
print(days[1])        -->M

a = {x=1, y=2}        --等价于 a={}; a.x=1; a.y=2

polyline = {color="blue", t=4, {x=0, y=1}}
print(polyline[3].x)            -->0

        在构造式中还可以用分号代替逗号。通常会将分号用于分隔构造式中不同的成分:

{x=0, y=1; "one", "two"}


© 著作权归作者所有

上一篇: Lua 笔记--语法
_子墨
粉丝 48
博文 157
码字总数 141425
作品 0
深圳
iOS工程师
私信 提问
Lua 学习笔记(2) 类型与值、表达式、语句、迭代器、泛型for

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l773575310/article/details/82715966 Lua 学习笔记(2) 类型与值、表达式、语句 参考书籍: 《Lua程序设计》...

ChiLi_Lin
2018/09/15
0
0
Lua 学习笔记(3) 函数、尾调用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l773575310/article/details/82823316 Lua 学习笔记(3) 函数、尾调用 参考书籍: 《Lua程序设计》 函数是第...

ChiLi_Lin
2018/09/23
0
0
Lua脚本学习笔记

Lua脚本优点 1、 减少网络开销;多次请求在脚本中,一次即可完成 2、 原子操作 3、 复用 4、 可实现热切换 Lua测试 $ redis-cli --eval /qpth/test.lua rate.limiting:127.0.0.1 , 10 3 详解...

独特55
2016/03/07
83
0
Lua 笔记--迭代器与泛型for

所谓“迭代器”就是一种可以遍历一种集合中所有元素的机制。在Lua中,通常将迭代器表示为函数。每调用一次函数,即返回集合中的“下一个”元素。 function values(t) local i = 0 return fu...

_子墨
2014/12/27
54
0
【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)

源码地址:https://github.com/Tinywan/Lua-Nginx-Redis Nginx与Lua编写脚本的基本构建块是指令。 指令用于指定何时运行用户Lua代码以及如何使用结果。 下面是显示指令执行顺序的图。 当一个...

tinywan1227
2017/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
2分钟前
1
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
6分钟前
1
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
6分钟前
2
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
6分钟前
2
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
12分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部