第一版是为 Lua 5.0 编写的。虽然在很大程度上仍然适用于后续版本,但有一些差异。
第四版针对 Lua 5.3,可在 亚马逊 和其他书店购买。
购买本书,您还可以帮助支持 Lua 项目。
用 Lua 编程 | ||
第一部分。语言 第 4 章。语句 |
赋值是更改变量或表字段值的常用方法
a = "hello" .. "world" t.n = t.n + 1
Lua 允许多重赋值,其中可以一步将值列表分配给变量列表。两个列表的元素都用逗号分隔。例如,在赋值
a, b = 10, 2*x中,变量
a
获得值 10,b
获得 2*x
。
在多重赋值中,Lua 首先计算所有值,然后才执行赋值。因此,我们可以使用多重赋值来交换两个值,如下所示
x, y = y, x -- swap `x' for `y' a[i], a[j] = a[j], a[i] -- swap `a[i]' for `a[j]'
Lua 始终将值的数目调整为变量的数目:当值列表短于变量列表时,额外的变量会将 nil 作为其值;当值列表长于变量列表时,额外的值会被静默丢弃
a, b, c = 0, 1 print(a,b,c) --> 0 1 nil a, b = a+1, b+1, b+2 -- value of b+2 is ignored print(a,b) --> 1 2 a, b, c = 0 print(a,b,c) --> 0 nil nil上述示例中的最后一个赋值显示了一个常见错误。要初始化一组变量,您必须为每个变量提供一个值
a, b, c = 0, 0, 0 print(a,b,c) --> 0 0 0
实际上,大多数之前的示例都是有点人为的。我很少使用多重赋值,只是为了在一行中编写多个赋值。但我们经常确实需要多重赋值。我们已经看到一个示例,即交换两个值。更常见的用法是从函数调用中收集多个返回值。正如我们稍后将详细讨论的那样,函数调用可以返回多个值。在这种情况下,单个表达式可以为多个变量提供值。例如,在赋值
a, b = f()中,
f()
返回两个结果:a
获得第一个结果,b
获得第二个结果。
版权所有 © 2003–2004 Roberto Ierusalimschy。保留所有权利。 |