【问题标题】:Lua: Create a table from a previously set variableLua:从先前设置的变量创建表
【发布时间】:2012-03-08 13:39:32
【问题描述】:

我正在从网站数据挖掘信息,我必须做的事情之一是将页面提供给我的一条信息更改为另一条信息,然后将第二条信息转换为变量.但是,我根本想不出办法。

鉴于下表:

t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}

...我怎样才能做到这一点:

adj = string.match(page,'Adjective: (%w+)')

...它匹配big,我可以返回tall 的值但是把它变成一个表格?我试过使用一个不起作用的函数,我不想做t[adj]={}之类的事情,因为我不想制作t的子表。

我觉得它正盯着我的脸,但我画的是空白。

编辑澄清:

我知道如何得到我需要的形容词,或者如何显示大的价值等等。我说的是这样做的能力:

  1. 根据找到的形容词查找值。在这种情况下,找到了big,值为tall
  2. 获取找到的值(同样,在本例中为tall)并将该值转换为自己的表。然后我会得到上面的表格,还有一个尚未填充的新表格,称为tall。这样,在我用信息填充它之后,我可以通过tall["somekeyvalue"] 调用它

现在这更有意义了吗?

【问题讨论】:

  • “把它变成一张桌子”是什么意思?您可以将它放在一个表格中,只需将 string.match 的调用包含在{} 中。

标签: variables lua lua-table


【解决方案1】:

如果你不介意全局变量,可以使用全局环境表。

在获得你的价值后(通过 t[adj]),你可以像这样创建你的表:

_G[t[adj]] = {}

然后您就可以在任何地方访问 tall 桌子了

【讨论】:

  • 这正是我想要的!非常感谢!
【解决方案2】:

在我看来,当你匹配一个形容词时,你想在你的表中查找它并返回你在那里得到的任何别名。

要在 lua 中执行此操作,您可以使用 [] 来查找表格:

t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}
adj = string.match(page,'Adjective: (%w+)')
print(t[adj])

如果它匹配page 中的“形容词:大”,它将打印tall。这是你想要的吗?关于“把它变成表格”的部分让我感到困惑。

【讨论】:

    【解决方案3】:

    由于我不知道如何在 Lua 中创建动态变量,我建议您创建一个表,该表将作为您创建的其他表的容器,以便您可以通过引用来使用它,例如“result.tall”这将是一个包含您添加到其中的元素的表格。

    看看这个例子:

    -- you have to initialize it
    result = {}
    result.tall = {}
    result.little = {}
    
    --insert the elements that can be another tables or not
    table.insert (result.tall, 'enormous')
    table.insert (result.little , {s = 'short'})
    
    -- so you can access it later
    for k,v in pairs(result.tall) do
        print(k,v)
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-20
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多