从 Lua 中的(最简单的)函数直接返回表条目

2024-02-12

我想编写最简单的函数,让我在无名表中返回所需的值,并且,ideally,它应该是这样的:

function RL_MyTool:Version(n)
    return {"0.4.0", "20221003-0230", "13.5.5"}[n]
end

但是,当然,这在 Lua 中是不允许的......


因此,我立即想到了另外两种可能性:

1:

function RL_MyTool:Version(n)
    local t = {"20221003-0230", "13.5.5"}
    return t[n] or "0.4.0"
end

2:

function RL_MyTool:Version(n)
    local n, t = n or 1, {"0.4.0", "20221003-0230", "13.5.5"}
    return t[n]
end

它们彼此略有不同,但执行相同的操作,如果没有给出参数,则具有返回默认值的优点,这很好。但是...您认为我仍然有可能像上面那样以最简单的方式编写它吗?基本上,我想要的甚至不必在函数中使用单个变量或表声明但仍然让我在调用时返回指定的表条目。

嗯,仅此而已。当然,如果最终不可能(我担心),那也不会是世界末日????,但我想确保我没有错过任何 Luatrick或者让我做得更像我最初想象的那样......谢谢!

附:哦,我不明白如何实现,但是当然,如​​果根本不需要使用表格就可以实现它,那将同样有效甚至更好。


EDIT:顺便说一句,为了记录并基于@Piglet(太棒了!)的答案,我必须以这种方式进一步减少它:

function RL_MyTool:Version(n)
    return ({"0.4.0", "20221003-0230", "13.5.5"})[n or 1]
end

通过避免重复值,同时提高代码可用性/维护性......有点双赢????


只需将表格放在括号中即可。

function RL_MyTool:Version(n)
    return ({"0.4.0", "20221003-0230", "13.5.5"})[n] or "0.4.0"
end

但这的目的是什么?代码应该易于阅读并且易于使用。绝对没有理由不使用本地表。您不必为每行代码支付一美元。

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

从 Lua 中的(最简单的)函数直接返回表条目 的相关文章

  • 如何让 gcc/clang 警告 switch 语句中缺少中断

    有什么办法可以使gcc or clang警告 switch 语句中缺少中断 具体来说 我几乎总是希望 case 语句以中断结束 如果我不这样做的话 如果我能让编译器抱怨 那就太好了 如果它会寻找一个break语句或一个 fall throu
  • x 或 y:可接受的习语,还是混淆?

    我必须从可能为 None 的变量中提取值 并考虑一些默认值 我首先写了这段代码 if self maxTiles is None maxX maxY 2 2 else maxX maxY self maxTiles 然后我意识到我可以将其缩
  • 这段C++代码是如何工作的?

    我在 Geek For Geeks 中看到了下面的例子 include
  • 尝试将 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 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • Qt Designer 与手动编码

    每次我使用图形工具包开始一个项目时 第一个冲突就会发生在如何处理视觉设计和小部件布局的决定上 图形工具还是手动编码 这是一个非常棘手 主观的问题 因为大多数人会根据个人喜好来决定 它还很大程度上取决于图形工具的质量 在这种情况下 我想只关注
  • 微软编码标准文档

    Microsoft 是否有可供下载的编码标准文档 我想使用他们的标准 主要针对 C 如果您使用 C 则可以通过运行以下命令在编码时了解 Microsoft 的首选风格StyleCop http code msdn microsoft com
  • 当你不需要Python中的索引时,如何创建For循环? [复制]

    这个问题在这里已经有答案了 如果我需要一个forPython 中的循环 for i in range 1 42 print spam 但不要使用i对于任何事情 pylint 都会抱怨未使用的变量 我应该如何处理这个问题 我知道你可以这样做
  • 无法在 Silverlight 样式中添加系统颜色?

    我在 XAML 中为 SystemColors 定义了资源 如果我将 Foregroung 属性直接设置为 TextBlock 效果会很好 但是 如果我在样式中分配前景属性 则会收到如下所示的错误 我不确定问题是什么以及如何解决 任何想法都
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • 在Lua中获取前一天的日期

    谁能告诉我如何使用 Lua 获取 YYYY MM DD 格式的前一天日期 即 一个片段 它将返回运行当天的前一天的日期 Try print os date Y m d os time 24 60 60 严格来说 这只能保证在 POSIX 系
  • Lua 将字符串转换为数字 - 取决于语言环境

    刚刚注意到字符串 and tonumber 在 Lua 中是依赖于语言环境的 知道如何在不使用的情况下将字符串转换为数字tonumber 谢谢 例如将字符串 58 5 转换为 58 5 另外 当我尝试将带点的数字传递给函数时 该函数会转换
  • 如何使用批处理脚本调用的curl 获取http post 请求的响应代码?

    我正在努力为从我们的工具之一发送 http post 请求提供支持 该工具基本上通过 http 请求执行作业 实现此目的的方法是该工具使用多个参数调用 RunScript bat 该脚本解析这些参数并在验证后发出curl post 请求 P
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • Cleancode:在 Promise 中尝试/捕获

    我正在研究 redux form atm 并找到了这段代码 它对我有用 但是有没有更干净的方法可以用 ES6 风格编写它 const asyncValidate values dispatch gt return new Promise r
  • 如何让 Win32 使用 Windows XP 样式字体

    我正在使用纯 C 和 WinAPI 编写 Win32 应用程序 不允许使用 MFC 或 C 为了让控件使用适当的样式进行绘制 我使用了清单 如相应的 MSDN 文章中所述 一切都很好 当我更改系统样式时 我的应用程序也会更改样式 但使用的字
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • 就地操作返回对象是一个坏主意吗?

    我在这里主要讨论的是 Python 但我想这可能适用于大多数语言 如果我有一个可变对象 那么让就地操作也返回该对象是一个坏主意吗 似乎大多数示例只是修改对象并返回None 例如 list sort 是的 这是一个坏主意 原因是 如果就地操作
  • Lua 上的 For 循环

    我的作业是如何执行 for 循环 我已经从数字上弄清楚了 但无法从名称上弄清楚 我想创建一个 for 循环来运行名称列表 以下是我到目前为止所拥有的 names John Joe Steve for names 1 3 do print n

随机推荐

  • 从自定义指令 VueJS 更新模型

    我目前使用 Vue JS 2 0 我想从自定义指令更新一个 Vue 实例的模型 但我正在寻找一种很好的方法来做到这一点 这是因为我试图创建一个实现 JQueryUI Datepicker 代码的自定义指令如下
  • 指向匿名联合体的指针的强制转换在 C11 中有效吗?

    const Boo constBoo Boo nonConstBoo nonConstBoo union const Boo q Boo nq constBoo nq 上述构造在 C11 中有效 还是只有 GCC clang 扩展才能以这种
  • filter_var_array() 多维数组

    有什么想法为什么这行不通吗 POST array edit gt array name gt test die var dump filter var array POST array edit name gt FILTER SANITIZ
  • 有谁发现这个程序有什么问题吗

    在没有得到我喜欢的答案后这个关于 chroot 的问题 https stackoverflow com questions 3737008 how run in a chroot jail not as root and without s
  • 性能方面,按位运算符与普通模数的速度有多快?

    是否在正常流程或条件语句中使用按位运算 例如for if等可以提高整体性能 在可能的情况下使用它们会更好吗 例如 if i 1 vs if i 2 除非您使用的是古老的编译器 否则它已经可以自行处理这种级别的转换 也就是说 现代编译器可以并
  • NetBeans。连接到托管数据库

    我有共享主机上的数据库 是否可以从 NetBeans 连接到该数据库 是的 有条件的话是可以的 允许从外部访问您的数据库 这通常通过将主机设置为 关于数据库配置 要查看是否允许 您需要查看数据库管理面板和 或询问您的托管提供商 因为 不同的
  • 跟踪用户活动的 Gem [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一个好的 gem 来跟踪 记录网站上的用户活动 例如 当他们登录 注销或执行更改网站上某些内容的操
  • ABRecordCopyValue 返回 0 ?

    我想做的是获取所有联系人并依赖 如果联系人有 社会档案财产或没有 在获得所有这些联系人之后社会档案财产我会做简单的过滤来知道是否是脸书 推特 在我发布这个问题之前 我花了一整天的时间试图找到这个问题的解决方案 但它允许返回0 ABAddre
  • 依赖关系保留

    因此 我正在查看我的数据库笔记和材料 试图让自己了解即将到来的采访的一般概念和术语 然而 我陷入了依赖和无损连接分解的困境 我到处搜索并看到很多数学方程 但我正在寻找简单明了的英语答案或例子 我找到了一个来自http www cs kent
  • 如何使用纯 CSS 和 HTML 叠加图像/水印

    有没有一种简单的方法可以通过相对定位将透明 PNG 或任何其他图像 覆盖在带有 CSS 的图像标签上 只需传递一个类 img class watermarked src http placehold it 500x325 jpg alt P
  • C# 如何知道给定路径是否代表根驱动器?

    我如何知道给定目录是否是根驱动器 除了检查其路径是否等于 A B C 等 检查 DirectoryInfo Parent 是否为空 DirectoryInfo d new DirectoryInfo if d Parent null IsR
  • 为 LINQ/Lambda 创建 OrderBy 表达式

    我正在创建一个使用 Lambda LINQ 进行动态 where 和 orderby 的概念验证 以下代码适用于 where 表达式 但我不知道如何创建 order by 表达式 对于这个例子 如果可能的话我想保持简单 我宁愿不编写修改表达
  • 在自定义类中注入 Laravel 5.1“Illuminate\Http\Request”?

    这是我的简单应用 库 Gelocation php class namespace App Libraries use Location use Illuminate Http Request class GeoLocation publi
  • 如何使用 pyautogui 处理图像

    我想知道是否可以这样做pyautogui locateOnScreen 对于完整的文件夹 我的意思是一个包含 20 个不同图像的文件夹 并在屏幕上找到它们 是否可以做pyautogui 否则你会怎么做 到目前为止 这是我的代码 from p
  • 让 git 阻止修改推送的提交

    是否可以让 git 检查远程分支prepare commit msg挂钩并查看当前提交是否是修改 如果是 则中止提交 这样可以确保您无法修改已经推送的提交 这会很方便 没有办法阻止某人做git commit amend在他们自己的机器上 但
  • qtconsole 不将 pandas 数据帧渲染为 html notebook_repr_html 选项

    我最近升级了 pandas 的版本 我现在安装了最新的稳定版本 pd version Out 5 0 10 1 在此升级之前 这就是数据帧在 qtconsole shell 中显示的方式 这不是我的屏幕截图 只是我在网上找到的屏幕截图 最新
  • 如何恢复 Android 应用程序的默认区域设置

    我有这个 Android 应用程序 已本地化为多种语言 如果存在适合设备区域设置的字符串 应用程序会自动显示它 到目前为止 一切都很好 接下来 我想允许应用程序的用户切换到我提供的其中一种语言 我可以通过覆盖默认区域设置来做到这一点 这里也
  • 如何知道 Xcode 中是否触摸了 .png 的唯一可见区域

    我已将 png 图像导入到UIImageView在 Xcode 中 我想要做的是当触摸图像时 它将被隐藏 但我的问题是 png 图像包含透明部分 当我触摸透明部分时 动作会继续 我希望仅当图像的可见部分被触摸时动作才继续 如何解决问题 Sw
  • 在 CSP 中不使用“unsafe-eval”的 Vuejs 浏览器扩展

    我使用 Vuejs 构建了一个浏览器插件 并使用 Laravel Mix 作为我的构建过程 我的所有 vue 模板都在单个文件组件中 一切都工作得很好 直到我从插件清单中的 CSP 中删除 unsafe eval 火狐浏览器显示错误 Con
  • 从 Lua 中的(最简单的)函数直接返回表条目

    我想编写最简单的函数 让我在无名表中返回所需的值 并且 ideally 它应该是这样的 function RL MyTool Version n return 0 4 0 20221003 0230 13 5 5 n end 但是 当然 这