Lua初探(五)基础整理

1、变量

1.1 基础变量

Lua 变量有三种类型:全局变量、局部变量、表中的域。

Lua 中的变量全是全局变量,哪怕是语句块或是函数里,除非用 local 显式声明为局部变量。

局部变量的作用域为从声明位置开始到所在语句块结束。

变量的默认值均为 nil。

1.2 变量赋值

1.2.1

Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。

a, b = 1, 2				a=1; b=2

1.2.2

遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:

x, y = y, x

1.2.3

当变量个数和值的个数不一致时:

  • 变量个数 > 值的个数 —— 按变量个数补足nil
  • 变量个数 < 值的个数 —— 多余的值会被忽略

1.2.4

f()返回两个值,第一个赋给a,第二个赋给b:

a, b = f()

1.2.5

应该尽可能的使用局部变量,有两个好处:

  • 避免命名冲突
  • 访问局部变量的速度比全局变量更快

1.3 索引

table 的索引可以使用[],也可以使用.

table[i]
table[key]
table.key

2、逻辑语句

2.1 循环

2.1.1 循环语句

2.1.1.1 while

在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。

2.1.1.2 for

重复执行指定语句,重复次数可在 for 语句中控制。

2.1.1.3 repeat…until

重复执行循环,直到 指定的条件为真时为止。

a = 10

repeat
   print("a=", a)
   a = a + 1
until( a > 15 )
2.1.1.4 循环嵌套

可以在循环内嵌套一个或多个循环语句(while do … end;for … do … end;repeat … until;)。

2.1.2 循环控制语句

2.1.2.1 break

退出当前循环或语句,并开始脚本执行紧接着的语句。

2.1.2.2 goto

将程序的控制点转移到一个标签处。

2.2 判断语句

控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。要注意的是Lua中 0 为 true。

2.2.1 if

由一个布尔表达式作为条件判断,其后紧跟其他语句组成。

2.2.2 if…else

if 语句 可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码。

2.2.3 if 嵌套

可以在if 或 else if中使用一个或多个 if 或 else if 语句 。

3. 函数

在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。

Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上,type()可以获取类型等。

Lua 函数主要有两种用途:

  • 完成指定的任务,这种情况下函数作为调用语句使用;
  • 计算并返回值,这种情况下函数作为赋值语句的表达式使用。

3.1 base

function f(v)
	...
end
function f(v)
	...
	return v;
end
f = function(v)
	...
	return v;
end

3.2 多返回值

function f(v)
	local v2 = v + 1
	return v, v2
end

3.3 可变参

在函数参数列表中使用三点 … 表示函数有可变的参数。

function sum(...)
	local s = {...}
  local result = 0;
  for index, value in ipairs(s) do
    result = result + value
  end
  return result
end

print(sum(1,1,2))
print(sum(2,2,5,1))

有时候我们可能需要几个固定参数加上可变参数,固定参数必须放在变长参数之前:

function sum(v1, ...)
  • select(’#’, …) 返回可变参数的长度。
  • select(n, …) 用于返回从起点 n 开始到结束位置的所有参数列表。

4、运算符

Lua提供了以下几种运算符类型:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 其他运算符

4.1 算术运算符

操作符描述备注
+加法
-减法/负号local a = 1 print(-a)
*乘法
/除法结果为number
//整除>=lua5.3
%取余
^

4.2 关系运算符

操作符描述备注
==判断是否相等
~=判断是否不相等
>大于
<小于
>=大于等于
<=小于等于

4.3 逻辑运算符

操作符描述备注
and
or
not

4.4 Else

操作符描述备注
. .字符串连接符lua字符串连接不能用+
#一元运算符,返回字符串或表的长度

4.5 优先级

除了 ^ 和 … 外所有的二元运算符都是左连接的。

^
not   -(负号)
*   /   %
+   -
. .
<   >   <=   >=   ~=   ==
and
or
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值