Lua中的运算符简明总结_Lua

1. 数字运算

支持 +, -, *, /,^ 。 这些运算符的操作数都是实数。

2. 连接运算

连接两个字符串,用”..”运算符。
如果操作数为数字,Lua将数字转换成字符串。

3. 赋值运算

多变量一起赋值:

复制代码 代码如下:

a,b,c,d = ‘www.jb51.net', ‘Q群: 14624678 ′,1,2

变量交换:

复制代码 代码如下:

a,b=b,a

在默认情况下,变量总是认为是全局的。假如需要定义局部变量,则在第一次赋值的时候,需要用local说明。如:

复制代码 代码如下:

local a,b,c = 1,2,3

a,b,c都是局部变量。

4. 逻辑运算

复制代码 代码如下:

and, or, not

在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true
and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
a and b:如果a为false,则返回a;a true 返回b
a or b:如果 a 为true,则返回a;a false 返回b
模拟C语言中的语句:x = a? b : c,在Lua中,可以写成:x = a and b or c。
最有用的语句是: x = x or v,它相当于:if not x then x = v end 。

5. 关系运算

复制代码 代码如下:

< > <= >= == ~=

这些操作符返回的结果要么false要么true。
==和~=是比较两个值,如果两个值类型不同,Lua认为两者不同。
Lua比较数字按传统的数字大小进行,比较字符串按字母的顺序进行,但是字母顺序依赖于本地环境。
如果使用关系运算符来比较两个table,只有两个table是同一个对象的时候才能得到预期的结果,因为变量只是table对象的引用,就像指针一样,不能直接比较存在于table中的值。

复制代码 代码如下:

> t_a = [ 'www.jb51.net', 'Q群:14624678 ']
> t_b = [ 'www.jb51.net', 'Q群:14624678 ']
> if t_a == t_b then
> print("true")
> else
>  print("false")
> end
false

t_a与t_b是两个完全不同的结构。

复制代码 代码如下:

> t_a = [ 'www.jb51.net', '14624678 ']
> t_b = t_a
> if t_a == t_b then
>  print("true")
> else
>  print("false")
> end
true

t_b指向了同样的对象t_a。

时间: 2024-07-30 04:15:53

Lua中的运算符简明总结_Lua的相关文章

Lua中关系运算符的使用教程

  这篇文章主要介绍了Lua中关系运算符的使用教程,是Lua学习入门中的基础知识,需要的朋友可以参考下 下表列出了所有的Lua语言支持的关系运算符.假设变量A持有10和变量B持有20则: 示例 试试下面的例子就明白了所有的Lua编程语言提供的关系运算符: 代码如下: a = 21 b = 10 if( a == b ) then print("Line 1 - a is equal to b" ) else print("Line 1 - a is not equal to

Lua中..和#运算符的使用方法

  这篇文章主要介绍了Lua中..和#运算符的使用方法,是Lua入门学习中的基础知识,需要的朋友可以参考下 通过Lua语言支持其他运算符包括串联和长度. 例子 试试下面的例子就明白了在Lua编程语言提供的其他运算符: 代码如下: a = "Hello " b = "World" print("Concatenation of string a with b is ", a..b ) print("Length of b is "

Lua中的metatable详解_Lua

Lua 中 metatable 是一个普通的 table,但其主要有以下几个功能: 1.定义算术操作符和关系操作符的行为 2.为 Lua 函数库提供支持 3.控制对 table 的访问 Metatables 定义操作符行为 Metatable 能够被用于定义算术操作符和关系操作符的行为.例如:Lua 尝试对两个 table 进行加操作时,它会按顺序检查这两个 table 中是否有一个存在 metatable 并且这个 metatable 是否存在 __add 域,如果 Lua 检查到了这个 __

LUA中的闭包(closure)浅析_Lua

之前对closure一知半解,在网上也找不到一篇文章能把它说清楚,今天好像第一次对它有点清晰的了解 了,写个BLOG记念一下 lua的函数是一种 First-Class Value 的东西, 到底是啥? 就是它们与传统类型的变值没啥区别, 可以 存到一个变量中, 可以 存到table中, 可以 作为实参传递给其它函数, 可以 作为其它函数的返回值. 它们还具有特定的词法域(Lexical Scoping), 也就是说, 一个函数可以嵌套在另一个函数中, 内部的函数可以访问外部函数中的变量. 如下

Lua中的闭包学习笔记_Lua

之前介绍 Lua 的数据类型时,也提到过,Lua 的函数是一种"第一类值(First-Class Value)".它可以: 存储在变量或 table (例如模块和面向对象的实现)里 复制代码 代码如下: t = { p = print } t.p("just a test!") 作为实参(也称其为"高阶函数(higher-order function)")传递给其他函数调用 复制代码 代码如下: t = {2, 3, 1, 5, 4} table

详解Lua中的数组概念知识_Lua

 数组是有序的对象的装置,它可以是包含含有多个行和列的行或多维阵列的集合的单个二维数组. 在Lua中,数组是使用索引表与整数实现的.数组的大小是不固定的,它可以增长基于我们需要受存储器限制.一维数组 一维数组可以用一个简单的表结构来表示,可以初始化,使用一个简单的for循环读取.如下例子所示. 复制代码 代码如下: array = {"Lua", "Tutorial"} for i= 0, 2 do    print(array[i]) end 当我们运行上面的代码

详解Lua中的变量相关知识点_Lua

 变量不过是存储到区域项目可以操作的名称.它可以容纳不同类型的值,包括函数和表格. 变量名可以由字母,数字和下划线.它必须以字母或下划线.大写和小写字母是不同的,因为Lua是区分大小写的.有八种基本类型值在Lua中: 在Lua,尽管我们没有变量的数据类型,我们基于该变量范围的三种类型.     全局变量:所有的变量默是全局除非显式地声明为局部.     局部变量:当类型被指定为局部的一个变量,它的范围是有限的在自己的范围内使用.     表字段:这是一种特殊类型的变量,可以除了nil,包括功能不

简单讲解Lua中的垃圾回收机制_Lua

 Lua使用基于被内置在Lua某些算法的垃圾收集自动内存管理.可以自动内存管理的结果,作为一个开发者:     没有必要担心的对象分配内存.     无需释放他们时,不再需要可将其设置为nil. Lua使用运行不时收集死的对象时,不再从Lua程序中访问垃圾收集器. 所有对象,包括表,用户数据,函数,线程,字符串等受自动内存管理. Lua使用增量标记和使用两个数字来控制其垃圾回收周期即垃圾收集暂停和垃圾收集器的步骤事半功倍清除收集器.这些值是在百分比和100的值是常等于1.垃圾收集暂停 垃圾收集停

Lua中调用C++函数实例_Lua

到这为止,大家对Lua和C++之间的通信应该有些熟悉了,今天我们来介绍最后一个操作. (旁白:什么?最后一个?要结束了么?太好了~!) 上一章传送门:http://www.jb51.net/article/55097.htm 1. Lua调用C++的函数 Lua要调用C++的函数还是蛮方便的,首先,我们来创建一个c++函数先: 复制代码 代码如下: public: static int getNumber(int num); int HelloLua::getNumber( int num )