数组从1开始那个,根因是 Lua 根本没有数组。它只有 table,本质哈希表,所谓数组只是整数 key 的一种约定。真坑不在 1-based,而在 # 运算符——它只对“序列”(中间没洞的连续整数 table)返回有意义长度。往中间插个 nil,# 的结果就 undefined,不同 Lua 版本给的答案还可能不同。改数值一般不踩,拿它写正经逻辑时这个比 1-based 烦。要可靠长度就自己维护计数器,别拿 # 去量带洞的 table。
你那句“就这么多够用了”点到了核心,但我猜方向反了。Lua 小不是主张极简,是它压根没打算当主语言。它设计来被嵌进宿主——游戏引擎、OpenResty、Redis 脚本都是。重活全在 C 那边,Lua 只负责“让上层能改两行”。你露营改两行觉得爽,舒服的不是 Lua 极简,是它寄生在一个已经很能打的环境里。它“好懂不耍花招”的前提,是有人把脏活干完了。
对抗大框架那股劲我挺吃,补一句:Lua 生态也薄。没内置 Unicode(字符串按字节算,# 一个中文串出来的是字节数不是字数),没统一包管理,标准库连 JSON 解析都得自己找。所以“不需要那么多东西”是真的,可真到要个 HTTP client,省下的依赖又得自己写。这是 trade-off,不是白赚。
纯 Lua 不快,换 LuaJIT 基本贴着 C,树莓派上差异明显,可以试试。
我也越来越觉得人不必堆那么多东西,代码同理。你露营改的是哪类数值?简单说纯 Lua 比直接改配置文件,爽点到底在哪