将字符串转换为 table 数据类型
converting string to table data type
我有一些代码,我希望它从列表中选择一个随机字符串并将其转换为要在 joypad.set() 函数中使用的数据类型。
这是我的代码:
Buttons = { A = true,
B = true,
Down = true}
while (true) do
Random = math.random(3)
NewButton = (Buttons[Random])
joypad.set(1, (NewButton))
emu.frameadvance();
end;
你没有说明你的问题,但从你的代码来看,你似乎没有从你期望的数组中获取值。你得到一个介于 1 和 3 之间的随机数,但是 A、B 和 Down 是 而不是 1、2 和 3。Buttons 是一个关联数组(键值对)你声明它的方式,所以如果你想以这种方式使用它,你将需要设置第二个仅包含键名的数组,并从中获取一个随机索引,如下所示:
ButtonKeys = { "A", "B", "Down" }
Random = math.random(3)
NewButton = (Buttons[ButtonKeys[Random]])
这将创建一个 table,其中 A、B 和 Down 的值作为索引 1、2 和 3,因此您使用随机数从 ButtonKeys 数组中获取值,然后使用它值作为 Buttons 数组的索引。
编辑:我重读了这个问题并检查了我原来的答案,意识到我在考虑你以不同的方式声明 table。您声明 table、A、B 和 Down 成为按钮的属性,您可以通过直接调用它们来访问它们,如 Buttons.A
、Buttons.B
和 Buttons.C
,或者通过使用带有 string 名称的方括号来访问 属性。在您的情况下,Buttons["A"]
、Buttons["B"]
和 Buttons["Down"]
.
我有一些代码,我希望它从列表中选择一个随机字符串并将其转换为要在 joypad.set() 函数中使用的数据类型。 这是我的代码:
Buttons = { A = true,
B = true,
Down = true}
while (true) do
Random = math.random(3)
NewButton = (Buttons[Random])
joypad.set(1, (NewButton))
emu.frameadvance();
end;
你没有说明你的问题,但从你的代码来看,你似乎没有从你期望的数组中获取值。你得到一个介于 1 和 3 之间的随机数,但是 A、B 和 Down 是 而不是 1、2 和 3。Buttons 是一个关联数组(键值对)你声明它的方式,所以如果你想以这种方式使用它,你将需要设置第二个仅包含键名的数组,并从中获取一个随机索引,如下所示:
ButtonKeys = { "A", "B", "Down" }
Random = math.random(3)
NewButton = (Buttons[ButtonKeys[Random]])
这将创建一个 table,其中 A、B 和 Down 的值作为索引 1、2 和 3,因此您使用随机数从 ButtonKeys 数组中获取值,然后使用它值作为 Buttons 数组的索引。
编辑:我重读了这个问题并检查了我原来的答案,意识到我在考虑你以不同的方式声明 table。您声明 table、A、B 和 Down 成为按钮的属性,您可以通过直接调用它们来访问它们,如 Buttons.A
、Buttons.B
和 Buttons.C
,或者通过使用带有 string 名称的方括号来访问 属性。在您的情况下,Buttons["A"]
、Buttons["B"]
和 Buttons["Down"]
.