lua中 list.last = last 和list[last]=value区别
在 Lua 中,list.last = last 和 list[last] = value是两种完全不同的操作,核心区别在于它们操作的是表(table)的不同元素类型:
1. list.last = last这是给表 list 添加 / 修改一个名为 last 的键值对(字段),其中 last 是字符串类型的键。
• 相当于 list["last"] = last(Lua 中 . 语法是 [""] 语法的简写,键名会被当作字符串)。
• 无论 last 变量的值是什么(数字、字符串等),这里的键始终是字符串 "last"。
示例:
local list = {}
local last = 100list.last = last -- 等价于 list["last"] = 100
print(list.last) -- 输出 100
print(list["last"]) -- 输出 100(与上一行等价)
print(list[last]) -- 输出 nil(因为键是字符串"last",不是数字100)
2. list[last] = value这是给表 list 添加 / 修改一个以 last 变量的值为键的键值对,键的类型由 last 变量的值决定(可以是数字、字符串、表等)。
• 若 last 是数字,就是操作表的数组部分(类似数组的索引)。
• 若 last 是字符串,就是操作表的字段(等价于 list.last = value 当且仅当 last 是字符串 "last" 时)。
示例:
local list = {}
local last = 3 -- last是数字3
local value = "hello"list[last] = value -- 等价于 list[3] = "hello"
print(list[3]) -- 输出 "hello"
print(list.last) -- 输出 nil(因为没有键"last")
另一个例子(last 是字符串):
local list = {}
local last = "last" -- last是字符串"last"
local value = 200list[last] = value -- 等价于 list["last"] = 200,也等价于 list.last = 200
print(list.last) -- 输出 200(此时与list[last]效果一致)
总结
表达式 | 含义 | 键的类型 | 典型用途 |
---|---|---|---|
list.last = last | 给表添加键为 "last" 的字段 | 固定为字符串 | 给表添加描述性属性(如元信息) |
list[last] = value | 给表添加键为 last 变量值的字段 | 由 last 决定 | 动态操作表元素(如数组索引) |
简单说:list.last 是固定操作名为 "last" 的字段,而 list[last] 是操作以 last 变量值为键的字,后者更灵活,可动态指定键。