表达式用于表示值。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 笔记--表达式相关推荐

  1. Lua笔记-关于lua table的C API

    //Lua笔记-关于lua table的C API //转载请注明来自yuliying的CSDN博客. //Lua版本5.2 /*相关API: ====lua_createtable 原型: void ...

  2. lua笔记之local

    lua笔记之local 最近使用lua语言遇到一个小问题,这里要记录一下 lua 中使用 local 的变量,例如: function testLocal()print(a, b)a = 10086l ...

  3. lua笔记1 基础概念

    基础概念 Lua的变量默认是全局的,如果想要清除,只需要设置为nil.没有赋值的变量也是nil.注意lua是动态语言,变量不需要声明类型,而且自动类型转换. b = 1 print(b) b = ni ...

  4. 脚本语言lua笔记(5)c++调用lua

    首先搭建环境,使用vs2010的c++开发工具,lua源码包,可以去官方下载最新源码包,我采用的是lua-5.1.5的版本.好了,开始配环境. 第一步: 下载源码包后,解压lua-5.1.5源码包到硬 ...

  5. Lua笔记——4.Package

    module简介: Lua 5.1 加入模块管理机制module,类似于Java的packages.C++的namespaces,可以通过require用于加载模块,module用于创建模块.requ ...

  6. 表达式树 php,Linux_LINQ学习笔记:表达式树,构建查询表达式 本节中, 我们 - phpStudy...

    构建查询表达式 本节中, 我们假设我们拥有一个这样的实体类: 1: [Table] public partial class Product 2: 3: { 4: 5: [Column(IsPrima ...

  7. Lua笔记4 闭包、迭代器

    闭包 首先,明确闭包的概念.个人理解,一个闭包是一个封闭的数据和状态集合,闭包在创建的时候,可以捕获包外的数据,然后在包内会有一个数据副本,闭包内数据的生命周期随着闭包的结束而结束.在lua中,闭包是 ...

  8. Lua笔记3 函数和数组

    函数 这里主要介绍可变参数函数,使用...表示可变参数函数. function add( ... )local s = 0for i, v in ipairs{...} do -- {...}表示可变 ...

  9. Lua笔记2 变量、循环和流程控制

    变量 变量使用前必须声明,lua的变量默认全局的,哪怕该变量在函数中.局部变量使用local进行声明,仅在作用域中有效.函数中声明的变量,在函数调用前是不会起作用的. 代码示例: function f ...

  10. lua笔记之userdata

    1.一直使用框架里封装好的c库,想着自己一点一点的写些例子,学习下,以后需要c库,可以自己写了. 下边是一个简单的userdata的例子--数组操作. newarray.c #include &quo ...

最新文章

  1. php 判断是否gzip,PHP网站判断页面文件或图片是否经过gzip压缩
  2. 全文检索、数据挖掘、推荐引擎系列5---文章术语向量表示法
  3. android double转string_Java 数组转 List 的三种方式及对比
  4. OpenGL MSAA多重采样抗锯齿的实例
  5. 【Angular】MVVM
  6. oracle和sql server取第一条记录的区别以及rownum详解
  7. 从GAN到WGAN到LipschitzGA
  8. rmdir命令--Linux命令应用大词典729个命令解读
  9. 需要写的一些pycoe
  10. Django:ORM基本操作-CRUD,管理器对象objects,----->查询3(单条更新,批量更新)
  11. C# 线程间互相通信
  12. 如何在 Azure 虚拟机里配置条带化
  13. javamailsender注入失败_使用Spring3.x框架的java mail支持来发送邮件
  14. emc测试e3软件系数导入,EMC测试标准
  15. 安卓的短信记录导入苹果_如何把安卓系统的短信导入苹果手机
  16. 方向传感器新的替代方法详解
  17. 微信答题小程序开发遇到过的坑
  18. python钉钉扫码登录程序_钉钉扫码登录网站(两种方式实现)
  19. OS学习笔记-21(清华大学慕课)文件系统
  20. PPT中如何将图片灰化(黑白化)

热门文章

  1. 我是如何在GitHub上开源一个项目的(截图说明) (VS2010可以安装git插件)
  2. Intel 平台编程总结----SIMD技术
  3. 【VS2010学习笔记】【异常处理】general error c1010070: Failed to load and parse the manifest.
  4. Machine Learning——Homework 7
  5. CSS学习总结(5)——列表/表格/链接/鼠标光标样式
  6. 【Python读文件】'gbk' codec can't decode byte 0xb1 in position 5: illegal multibyte sequence
  7. SARscape操作:Sentinel-1 SLC影像镶嵌、裁切
  8. java中包定义_java中包的定义与使用
  9. mysql如何管理事务管理_浅谈MySQL事务管理(基础)
  10. Android仿京东、天猫app的商品详情页的布局架构, 以及功能实现