使用变量作为表中键来调用值

在我的代码中,我试图编写一个脚本,你可以偷一辆车,将其送还,然后获得一定金额的报酬。我制作了一张表格,定义了每辆车可以得到多少报酬。我可以让键起作用,所以我的脚本可以识别汽车。

local cars = {

    ["panto"] = '5',
    ["oracle"] = '10',
    ["felon"] = '15',
    ["sentinel"] = '20',
    ["ratloader"] = '25',
    ["dune"] = '30',
    ["buccaneer"] = '35'

}

这是表格,然后我将其转换为:

local voertuigen = {}
for k,_ in pairs(cars) do
    table.insert(voertuigen, k)

我是荷兰人,所以我使用一些荷兰语变量,可能有些混淆,仍在努力;)

voertuig = (voertuigen[math.random(1, #voertuigen)])

这部分写在一个if语句中,但这不是问题,当我尝试引用voertuig作为键时,由于它是存储键的变量,它不起作用;

salaris = cars.voertuig

当我试图自我排查时,我发现print(cars.oracle)(表中的一个键)可以使用,但当我使用

voertuig = oracle
print(cars.voertuig)

它会返回: SCRIPT ERROR: @carjob/cj_client.lua:114: attempt to concatenate a nil value (upvalue 'voertuig')

我希望我提供了足够的代码让你理解,并希望你们中的一个人能帮助我。谢谢!

点赞
用户2858170
用户2858170

请注意字符串值和变量之间的区别。

local a = {"name"}

a.namea["name"]的语法糖。

在你的例子中,vertuig = oracle等同于vertuig = nil,因为oracle是一个nil值。

cars.voertuig也是nil。因为你从未给cars["voertuig"]赋值。

你想做的事情是:

vertuig = "oracle"
print(cars[vertuig])

其中cars[vertuig]解析为cars["oracle"]

请参考Lua手册,了解如何适当地索引表值。

voertuig = (voertuigen[math.random(1, #voertuigen)])
salaris = cars[voertuig]

在可能的情况下,请使用局部变量。

2020-05-13 08:57:28