【问题标题】:Lua - How to use constants with vars?Lua - 如何在变量中使用常量?
【发布时间】:2013-08-29 10:14:23
【问题描述】:

我真的不知道 lua 的线索,如果这是愚蠢的,那么对不起^^'

我有一个像这样的常量(?):

Config.name

它的内容是“真”或“假”。我动态设置了这个常量名(或成员名?),所以它可以是例如:Config.george、Config.steve 或 Config.tim。 现在我想检查这个常量,但我不知道语法是怎样的。

我想要这样的东西:

for _, friend in pairs(friends) do
    if Config.friend.name then
        print("He is checked!")
    end
end

“friend.name”应该是那个朋友的名字,例如乔治。 这是怎么做到的?

【问题讨论】:

  • 您是在问如何相互比较值吗?例如。 Config.friend.name == "george"?
  • 不,friend.name 应该是 george 或其他名称。 Config.george 是一个 var(或常量,ot 成员.. 我不知道在 lua 中),是真还是假..
  • 所以您想检查Config 的键是否设置为true,而键是friend.name 是什么?例如像这样的东西? if Config[friend.name] then
  • 是的,有点。但是该值被设置为我认为的成员(由点分隔)它不是带有索引或其他东西的数组。就像我设置 Config.george = true 然后我想检查 Config.george 是否为真。但我是在一个我还不知道名字的循环中做的,所以我需要一种动态的方式来调用 Config.whatever
  • Config.george 只是Config['george'] 的语法糖。它们在语义上是相同的。如果这两个指针仍然不能完全解决您的问题,您需要添加更多上下文代码来显示您正在尝试做的事情。

标签: lua constants member


【解决方案1】:

您似乎正在检查Config 表中的给定名称是否设置为true。假设friends 是您要检查的名称表,则代码为:

local friends = { 'george', 'steve', 'tim', } 
-- ...
for _, friend in pairs(friends) do
  if Config[friend] then
    print(friend.." is checked!")
  end
end

请注意,ipairs 也可以在这里工作或仅按索引迭代:

for i = 1, #friends do
  if Config[ friends[i] ] then
    print(friends[i] .. " is checked!")
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 2011-10-06
    • 1970-01-01
    • 2021-04-10
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多