Lua学习笔记之表达式

1、  算数运算符

二元运算符:+-*/^(加减乘除幂)

一元运算符:-(负值)

这些运算符的操作都是实数。

2、  关系运算符

<、>、<=、>=、==~=

这些操作符返回结果为false或者true;==和~=比较两个值,如果两个值类型不同,lua认为两者不同;nil只和自己相等。Lua通过引用比较tables、userdata、funcations。也就是说当且仅当两者表示同一个对象相等。

Lua比较数字按传统的数字进行比较,比较字符串按字母的顺序进行,但是字母顺序依赖本地环境。

当比较不同类型的值的时候要特别注意;

“0”==0 –false

2<15 –true

“2”<”15” –false为了避免不一致的结果,混合比较数字和字符串,lua会报错,比如:2<“15”

3、  逻辑运算符

and or not

逻辑运算符认为false和nil是假(false),其他为真,0也是真。

a and b  --如果a为false,则返回a,否则返回b

a or b   --如果a为true,则返回a,否则返回b

例如:

print(4and 5)             -->5

print(niland 13)          -->nil

print(falseand 13)        -->false

print(4or 5)              -->4

print(falseor 5)          -->5

一个很有用的使用技巧:如果x为false或者nil则给x赋初始值v

x =x or v

等价于

If not x then

X = v

End

And的的优先级比or高

C语言中的三元运算符:

a?b:c

在lua中可以这样实现:

(a and b)or c

Not 的结果一直返回false或者true

ptint(notnil)      -->truue

print(notfalse)   -->true

print(not 0)      -->false

pirint(not notnil)   -->false

4、 连接运算符

..两个点

字符串连接,乳沟操作数为数字,Lua将数字转成字符串。

print(“hello”..”world”)

5、  优先级

从高到低的排序:

^

not –(unary)

* /

+ -

..

< > <= >= ~= ==

And

Or

除了^和..所有的二元运算符都是做连接的。

a+i<b/2+1    <-->(a+i)<((b/2)+1)

5+x^2*8      <-->5+((x^2)*8)

6、  表的结构

构造器是创建和初始化表的表达式。表示lua特有的功能强大的东西。最简单的构造函数是{},用来创建一耳光空的表。可以直接初始化数组:

Days = {“sunday”,”monday”,”tuesday”,”wednesday”,”thursday”,”friday”,”staturday”}

Lua将Sunday初始化days[1](第一个元素索引为1),用”monday”初始化days[2]

print(days[4])    -->Wednesday

构造函数可以使用任何表达式初始化:

tab = {sin(1),sin(2),sin(3),sin(4),sin(5),sin(6),sin(7),sin(8)}

时间: 2024-10-10 05:00:08

Lua学习笔记之表达式的相关文章

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含

Lua学习笔记(三):表的构造

构造器是创建和初始化表的表达式.表是Lua特有的功能强大的东西.最简单的构造函数是{},用来创建一个空表.可以直接初始化数组: 1 days = {"Sunday", "Monday", "Tuesday", "Wednesday", 2 "Thursday", "Friday", "Saturday"} Lua将“Sunday”初始化days[1](第一个元素索引为

lua学习笔记之基本语法

Lua学习笔记之基本语法 1.  赋值语句 赋值是改变一个变量的值和改变表域的最基本的方法. a = "hello".."world" t.n = t.n+1 lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会一次赋给左边的变量. a,b = 10,2*x    <-->a = 10;b = 2*x 遇到赋值语句lua会先计算右边所有的值然后再执行赋值操纵,所以我们可以这样进行交换变量的值: x,y = y,x    

lua学习笔记之函数

Lua学习笔记之函数 1.  函数的作用 函数主要完成指定的任务,这样的情况下函数作为调用语句使用,函数可以计算并返回值,这样的情况下函数作为赋值语句的表达式使用. 语法: funcationfunc_name(arguments-list) Statements-list end 调用函数的时候,如果参数列表为空,必须使用()表示是函数调用. Print(8*9,9/8) a = math.sin(3) +math.cos(10) print(os.date()) 上述规则有一个例外,当函数只

[转]LUA 学习笔记

Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生成了一个exe,直接可以测试lua了 方式二(推荐): 从https://code.google.com/p/luaforwindows/ 下载“LuaForWindows_v5.1.4-46.exe”,一键安装即可  二.执行 lua xxx.lua 三.注释 1.行注释格式:-- 2.块注释格式

Lua学习笔记(六):函数-续

Lua中的函数是带有词法定界(lexical scoping)的第一类值(first-class values).第一类值指:在Lua中函数和其他值(数值.字符串)一样,函数可以被存放在变量中,也可以存放在表中,可以作为函数的参数,还可以作为函数的返回值.词法定界指:嵌套的函数可以访问他外部函数中的变量.这一特性给Lua提供了强大的编程能力. Lua中关于函数稍微难以理解的是函数也可以没有名字,匿名的.当我们提到函数名(比如print),实际上是说一个指向函数的变量,像持有其他类型的变量一样:

Lua学习笔记(五):函数

函数有两种用途: 1).完成指定的任务,这种情况下函数作为调用语句使用: 2).计算并返回值,这种情况下函数作为赋值语句表达式使用. 1 function func_name (arguments-list) 2 statements-list; 3 end; 4 5 --调用函数的时候,如果参数列表为空,必须使用()表明是函数调用 6 print(8*9, 9/8) 7 a = math.sin(3) + math.cos(10) 8 print(os.date()) 9 10 --上述规则有

Lua学习笔记9:多文件

一 终端中执行多个文件:-l 加入在文件一中定义了一个变量,在另一文件中输出这个变量,代码如下: --file1.lua num = 100 --file2.lua print(num) 终端输入(注意:不是lua命令行): lua -lfile1 -lfile2 注意:不要加上文件后缀名.lua 二 命令行中加载文件 --lib.lua function norm(x, y) local n2 = x^2 + y^2 return math.sqrt(n2) end function twic

lua学习笔记10:lua简单命令行

前面多次用了命令行,这次就好好学下命令行: 一 格式 lua [options][script][args] 二 具体命令 -e 直接将命令传个lua -l 加载一个文件 -i 进入交互模式 例如,终端输入: lua -e "print(math.sin(12))" lua学习笔记10:lua简单命令行,布布扣,bubuko.com