lua中 list.last = last 和list[last]=value区别

在 Lua 中,list.last = last 和 list[last] = value是两种完全不同的操作,核心区别在于它们操作的是表(table)的不同元素类型:

  1. list.last = last这是给表 list 添加 / 修改一个名为 last 的键值对(字段),其中last 是字符串类型的键。

相当于 list["last"] = lastLua 中 . 语法是 [""] 语法的简写,键名会被当作字符串)。

无论 last 变量的值是什么(数字、字符串等),这里的键始终是字符串 "last"

示例:

Lua 复制代码
local list = {}
local last = 100

list.last = last  -- 等价于 list["last"] = 100
print(list.last)  -- 输出 100
print(list["last"])  -- 输出 100(与上一行等价)
print(list[last])  -- 输出 nil(因为键是字符串"last",不是数字100)
  1. list[last] = value这是给表 list 添加 / 修改一个以 last 变量的值为键的键值对,键的类型由 last 变量的值决定(可以是数字、字符串、表等)。

• 若last 是数字,就是操作表的数组部分(类似数组的索引)。

• 若 last 是字符串,就是操作表的字段(等价于 list.last = value 当且仅当 last 是字符串 "last" 时)。

示例:

Lua 复制代码
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 是字符串):

Lua 复制代码
local list = {}
local last = "last"  -- last是字符串"last"
local value = 200

list[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 变量值为键的字,后者更灵活,可动态指定键。

相关推荐
疏狂难除1 天前
windows上使用LLVM编译lua
开发语言·lua
IMPYLH2 天前
Lua 的 Math(数学) 模块
开发语言·笔记·lua
脸大是真的好~3 天前
分布式锁-基于redis实现分布式锁(不推荐)- 改进利用LUA脚本(不推荐)前面都是原理 - Redisson分布式锁
redis·分布式·lua
ChaITSimpleLove4 天前
基于 .NET Garnet 1.0.91 实现高性能分布式锁(使用 Lua 脚本)
分布式·.net·lua
羑悻的小杀马特4 天前
Lua vs C++:核心设计哲学差异——从“系统基石”到“灵活工具”的思维碰撞
c++·lua
小毅&Nora4 天前
【后端】【工具】Redis Lua脚本漏洞深度解析:从CVE-2022-0543到Redis 7.x的全面防御指南
redis·安全·lua
古城小栈4 天前
接口测试:Postman+Newman 自动化脚本实战指南
自动化·lua·postman
小坏讲微服务4 天前
Spring Boot4.0 集成 Redis 实现看门狗 Lua 脚本分布式锁完整使用
java·spring boot·redis·分布式·后端·lua
IMPYLH5 天前
Lua 的 IO (输入/输出)模块
开发语言·笔记·后端·lua
菠萝地亚狂想曲5 天前
使用C语言操作LUA栈
c语言·junit·lua