Lua学习笔记(2)

Lua关系操作符

Lua提供了一下关系操作符:

  • <
  • >
  • <=
  • >=
  • ==
  • ~=

对于table,userdata和函数,Lua是作引用比较的。

Lua逻辑操作符

  • and
  • or
  • not

所有的逻辑操作符将false和nil视为假,而将其他的任何东西视为真。对于操作符and来说,如果它的第一个操作数为假,就返回第一个操作数;不然返回第二个操作数。对于操作符or来说,如果它的第一个操作数为真,就返回第一个操作数;不然返回第二个操作数。

“x=x or v”等价于 if not x then x = v end

为了选出数字x和y中的较大者,可以使用以下语句:

max = (x > y) and x or y

多重赋值

a, b, c = 0, 0, 0

在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值。因此利用多重赋值可以交换两个变量。

x, y = y, x(交换x与y)

多重赋值也可用于收集函数的多个返回值

泛型

泛型for循环通过一个迭代器函数来遍历所有值。

迭代文件中每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的string.gmatch等。

变长参数

Lua中的函数可以可以接受不同数量的实参。

1
2
3
4
5
6
7
function add(...)
local s = 0
for i, v in ipairs(...) do
s = s + v
end
return s
end

参数表中的三个点(…)表示该函数可接受不同数量的实参。当这个函数被调用时,它的所有参数都会被收集到一起。这部分收集起来的实参称为这个函数的”变长参数”。