带有字符串键的 Lua 表不能使用数字索引?

2024-01-15

我是 Lua 的初学者。

我认为使用字符串键将值推送到表中也会自动执行数字索引,但我认为我错了。

我的代码:

local t = {}
t.name = "John"
t.age = 30
print("Name : " .. t.name .. "\nAge : " .. t.age)

虽然这段代码运行良好并打印出预期的结果,

Name : John
Age : 30

如果我尝试以这种方式打印结果,

print("Name : " .. t[1] .. "\nAge : " .. t[2])

我收到以下错误:

lua: main.lua:5: attempt to concatenate a nil value (field '?')
stack traceback:
    main.lua:5: in main chunk
    [C]: in ?

这是否意味着我无法使用for使用数字索引而无需知道关键字符串?

如果是这样,是否有任何解决办法可以使双向工作?


向表中添加值并不像使用索引键那样添加它们。当您要使用表中的值时,您可以使用点符号访问它们,如第一个示例所示,或者如下所示:

print("Name : " .. t["name"] .. "\nAge : " .. t["age"])

您可以使用该函数迭代表中的键值对pairs像这样:

for k, v in pairs(t) do
    print(k, v)
end

如果你想使用索引而不是字符串键,你可以这样设置:

local t = {
    "John",
    30,
}
print("Name : " .. t[1].. "\nAge : " .. t[2])

当您这样做时,表中的值t自动为每个值分配整数索引。如果你想一一迭代它们,你可以使用 ipairs 进行迭代:

for i, v in ipairs(t) do
    print(i, v)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有字符串键的 Lua 表不能使用数字索引? 的相关文章

  • 我应该用 C++ 封装 Lua 代码的哪些代码?

    我终于将 LuaBind 配置为与我的 C 项目一起使用 我最近发现 Tiled 地图编辑器可以选择将文件导出为 lua 所以我想尝试一下 我将使用什么代码来封装下面粘贴的代码以使其与我的 C RPG 项目一起使用 return versi
  • Lua 中的内联条件(a == b ? "yes" : "no")?

    无论如何 Lua 中可以使用内联条件吗 Such as print blah a true blah nahblah Sure print blah a and blah or nahblah
  • 为什么 LuaJIT 和 Lua 中的数字舍入格式不同?

    Using string format 据说遵循 Csprintf 在 LuaJIT 轮次中格式化数字与我尝试过的所有其他 Lua 解释器不同 lua v Lua 5 4 1 Copyright C 1994 2020 Lua org PU
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 如何在 Lua 中实现 OO?

    Lua 没有内置对 OO 的支持 但它允许您自己构建它 您能否分享一些实现面向对象的方法 请为每个答案写一个例子 如果您有更多示例 请发布另一个答案 我喜欢将 OOP 视为容器 对象 内的数据封装以及可以使用该数据完成的操作子集 还有很多内
  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 确定已编译Lua的编译器版本

    我有一些已编译的 LuaQ 我需要确定用于编译它的确切版本 有什么可能的方法吗 编译的脚本在文件开头有一个标头 4 bytes signature x1bLua 1 byte version 0x51 1 byte format 1 byt
  • 尝试将 nil 与数字堆栈回溯进行比较?

    我正在通过以下链接玩 Lua https www lua org pil 4 2 html https www lua org pil 4 2 html并对某一点感到困惑 Lua 5 2 4 Copyright C 1994 2015 Lu
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • 在lua中组合两个函数

    我刚开始学习lua 所以我的要求可能是不可能的 现在 我有一个接受函数的方法 function adjust focused window fn local win window focusedwindow local winframe w
  • Lua 从 5.1 更新 - LUA_GLOBALSINDEX 问题

    我最近将旧的 Lua 5 1 项目更新到了该库的最新版本 但遇到了问题LUA GLOBALSINDEX 它变得不确定 我只用过它lua getfield函数 像这样 void luastartgame void if startgamefu
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的
  • 在Luasocket中,在什么条件下,即使在select告诉它可以安全读取之后,accept调用也可以阻塞?

    卢阿索基特select http w3 impa br diego software luasocket socket html select函数应该告诉何时可以在不阻塞的情况下读取套接字 它显然也可以用来告诉服务器套接字何时准备好接受新连
  • lua 和 walk_block 中的 pandoc 过滤器

    我正在尝试应用一个 LUA 过滤器 该过滤器只会更改文档的正文 而不影响元数据 而且比我想象的要难 过滤器应将文本添加到内联元素和块元素的前面和后面 如果它适用于内联元素 这里Code 对于块元素失败CodeBlock function P
  • 如何从 Lua 内部运行另一个脚本?

    我需要从另一个 Lua 脚本中执行一个 Lua 脚本 有多少种方法 我该如何使用它们 通常您会使用以下内容 dofile filename lua 但你可以通过以下方式做到这一点require 很好 例子 foo lua io write
  • 在 Lua/LuaFileSystem 中创建一个新文件

    我已经查看了 Lua 和 LuaFileSystem 文档 但尚未找到创建新文件的方法 我也在这里四处寻找 但目的相同 请注意 我正在寻找的解决方案必须与操作系统无关 以确保可移植性 但我很高兴针对不同的系统获得不同的答案 示例 将 Hel
  • Linq 是如何工作的(在幕后)?

    我正在考虑为 Lua 制作类似 Linq 的东西 并且我大致了解 Linq 的工作原理 但想知道是否有一篇好文章 或者是否有人可以解释 C 如何使 Linq 成为可能 注意 我的意思是在幕后 比如它如何生成代码绑定等等 而不是最终用户语法
  • 如何将 Lua 粘合到 C++ 代码?

    您使用 Luabind toLua 或其他库 如果使用 是哪一个 还是根本不使用 每种方法都有哪些优点和缺点 我不太同意 自己投票 将基本类型和静态 C 函数绑定到 Lua 是微不足道的 是的 但是当你开始处理表和元表时 情况就会发生变化
  • 构建自动化和 MySQL Workbench 脚本:正向工程师 SQL CREATE SCRIPT

    我目前正在研究自动化软件构建过程 其中包括 MySQL Workbench 中定义的数据库架构 使用 Workbench 的脚本编写功能 我想打开一个 Workbench 文档并将其架构导出为 SQL CREATE 脚本 我想知道是否有一个

随机推荐

  • 在 Windows 上学习 IOCP 的资源

    我最近意识到 Windows 上有一个名为 IOCP 的东西 我开始搜索有关它的更多信息 但我找不到任何最新的信息 大多数示例都在差不多 5 年前的 codeproject 上 并且没有太多指南或教程 任何人都可以以在线教程或示例项目 您编
  • 为什么 Unity 会卡在 Application.EnterPlayMode 上?

    我正在尝试使用柏林噪声和统一的行进立方体来创建程序地形生成器 它一直有效 直到我从创建高度图切换到将其制作成 3d 数组 然后 每当我单击播放时 Unity都会打开一个对话框 其中写入了Application EnterPlayMode 该
  • 为什么 Rust 不支持重载函数或方法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 java中的方法重载是一个非常有用的特性 有时 我们需要定义具有相同名称但具有不同参数集的函数 我想知道为什么 Rust 不支持这个功能 我认为
  • 如何在 Scala 中进行转换?

    例如假设我有 val myDouble 25 7 val myInt 5 我会怎么做类似的事情 val divide Int myDouble myInt 你可以做 myDouble myInt toInt 你也可以做toDouble to
  • tensorflow:reshape()可以创建副本吗?

    在他们的 API v4 中 torch 引入了reshape 更加符合 numpy 的风格 以前 改变火炬张量的形状是通过view 我想知道是否view 现在将被弃用并查看docs https pytorch org docs stable
  • 如何更新 Google Drive v3 PHP 中的文件

    我似乎无法使用以下代码更新谷歌驱动器中的文件 一切正常 但文件保持不变 我正在使用 v3 api function updateFile service fileId data try emptyFile new Google Servic
  • 将类应用于 br 标签? [复制]

    这个问题在这里已经有答案了 以下是有效的 HTML 吗 br class something 作为一个 HTML 元素 我不明白为什么它不会 但我认为我从未见过它被使用 Yes See 规格 https www w3 org TR html
  • tkinter 中的按钮命令选项

    在下面的小 GUI 应用程序中 当我使用按钮的命令选项来调用函数时 它不是这样工作的 self update 相反 它的工作原理如下 self update 为什么这样 按钮的命令选项是否有某种特殊的工作方式 我认为应该用这些大括号调用方法
  • 一些 Express.Router() 路由不执行中间件函数

    我正在尝试解决 Express router 的实现问题 而不是触发分配给它的中间件函数 我编写了一个相当大的应用程序 并尝试向我的路径添加更多端点 但由于某种原因 第 9 条路线被加载但没有触发该功能 app js server use
  • 将图像放置在居中的 div 后面

    我的网站有 900px div content以margin left auto and margin right auto 我有一个图像需要在 div 后面显示 该图像将部分重叠 content 图像目前设置为显示为块 我可以将其到达需要
  • Bootstrap 轮播可以仅旋转部分幻灯片吗?

    我有一个直接来自引导站点的香草轮播 carousel carousel interval 2000 它有 5 张幻灯片和 5 个指标 1 2 3 A B 我希望轮播能够自动循环播放幻灯片 1 2 和 3 然后重复 但是 如果我单击幻灯片 A
  • 无法让 JQuery 在母版页中工作

    我有一个没有母版页的表单中的示例 jquery 它工作正常 我试图在我的母版页中使用相同的功能 但它不起作用 我正在使用 ASP NET 这是我的代码 WebForm 这有效
  • 为什么要让用户在 PayuMoney 网关的 android SDK 中登录?

    我正在尝试集成适用于 Android 的 PayUMoney SDK 并成功将 SDK 添加到我的应用程序中 当用户单击支付按钮时 将打开登录页面 为什么要让用户登录 创建 payu 帐户 一旦用户按下支付按钮 支付选项就会打开 但事实并非
  • NSPredicate 中 ALL 、 ANY 和 SOME 运算符之间的区别

    我真的很难理解这 3 个 看起来像ANY and SOME做同样的事情 但我看不出有什么区别ALL 让我们有一个组列表 每个团体都有人类型的成员 每个人都有一个年龄 所有会员年龄 gt 30 意味着您将找到一个成员全部年龄超过 30 岁的群
  • Django unique_together 与可为空的外键

    我在使用 Sqlite 的开发机器中使用 Django 1 8 4 并且有以下模型 class ModelA Model field a CharField verbose name a max length 20 field b Char
  • 搜索自然语言句子结构

    存储和搜索自然语言句子结构树数据库的最佳方式是什么 Using OpenNLP 的 http incubator apache org opennlp 英语树库解析器 我可以对任意句子进行相当可靠的句子结构解析 我想做的是创建一个工具 可以
  • UserProfile 状态在 bot v4 中的用户之间保持不变

    当我有两个机器人实例时 如果我将机器人部署到 Azure 则可以是两个模拟器窗口或两个浏览器 输入的第一个名称对于所有其他实例都是持久的 实例一 https i stack imgur com WsPw7 jpg https i stack
  • 将spawn()的stdout/stderr重定向到Ruby中的字符串

    我想使用spawn 对于多个并发子进程 在Ruby 中执行外部进程 并将stdout 或stderr 收集到一个字符串中 这与使用Python 的子进程Popen communicate 可以完成的方式类似 我尝试将 out err 重定向
  • ReadableByteChannelImpl 如何处理中断

    我正在尝试使用Channels newChannel包装输入流以支持中断 我看到了关于这是否有效的相互矛盾的信息 包括 ReadableByteChannelImpl 中的注释 Not really interruptible In Rea
  • 带有字符串键的 Lua 表不能使用数字索引?

    我是 Lua 的初学者 我认为使用字符串键将值推送到表中也会自动执行数字索引 但我认为我错了 我的代码 local t t name John t age 30 print Name t name nAge t age 虽然这段代码运行良好