索引

简介: 在 Lua 中,赋值语句用于改变变量或表的值。可以同时对多个变量赋值,如 `a, b = 10, 2x`,右边的值会分配给左边的变量。赋值时,Lua 先计算右值再赋给左值,可用于交换变量值,如 `x, y = y, x`。若变量与值数量不匹配,变量多时补nil,值多时忽略多余值。多值赋值常用于交换变量和接收函数返回值。使用局部变量可避免命名冲突并提高效率。对表的索引可使用方括号或点运算符,如 `t[i]` 或 `t.i`。

赋值语句

赋值是改变一个变量的值和改变表域的最基本的方法。

a = "hello" .. "world"
t.n = t.n + 1Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a, b = 10, 2x <--> a=10; b=2x
遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:

x, y = y, x -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:

a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
实例
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。

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

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

对 table 的索引使用方括号 []。Lua 也提供了 . 操作。

t[i]
t.i -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
实例

site = {}
site["key"] = "www.baidu.com"
print(site["key"])
www.baidu.com
print(site.key)
www.baidu.com

相关文章
|
8月前
|
索引
索引
索引。
43 0
|
15天前
|
人工智能 索引
索引
Lua中的赋值语句用于改变变量或表域的值。可以同时对多个变量赋值,如`a, b = 10, 2x`。在交换变量值时,如`x, y = y, x`,Lua会先计算右值再赋值。当变量与值数量不匹配时,多余的值将被忽略或以`nil`补充。多值赋值常用于函数返回值分配,如`a, b = f()`。访问表使用方括号或点操作符,如`t[i]`和`t.i`。优先使用局部变量以避免命名冲突和提高效率。
|
29天前
|
安全 关系型数据库 MySQL
合理使用索引
【5月更文挑战第9天】这篇文章探讨了数据库索引的高效使用,包括函数和表达式索引、查找和删除未使用的索引、安全删除索引、多列索引策略、部分索引以及针对通配符搜索、排序、散列和降序索引的特殊技巧。还介绍了部分索引在减少索引大小和处理唯一性约束中的应用,以及PostgreSQL对前导通配符搜索的支持。通过遵循简单的多列索引规则和利用特定类型的索引,如哈希和降序索引,可以显著提高查询性能。
89 0
|
1月前
|
SQL 搜索推荐 关系型数据库
|
1月前
|
SQL 关系型数据库 MySQL
关于索引的使用
关于索引的使用
|
1月前
|
存储 算法 关系型数据库
索引总结(2)
索引总结(2)
15 0
|
8月前
|
存储 关系型数据库 MySQL
了解和认识索引
了解和认识索引 。
42 0
|
8月前
|
关系型数据库 MySQL 索引
索引(2)
索引(2)。
18 0
|
8月前
|
关系型数据库 MySQL 数据库
了解和认识索引
了解和认识索引。
30 0
|
数据库 索引
请注意这些情况下,你的索引会不生效!
数据库性能优化是确保系统高效运行的关键要素之一。而索引作为提升数据库查询性能的重要工具,在大部分情况下都能发挥显著的作用。然而,在某些情况下,索引可能会失效或不起作用,导致查询性能下降,甚至引发性能瓶颈。