Lua表格错误?

我正在制作一种类似于“测验”的东西,并且希望脚本从表格中随机选择一个问题。没有错误,但当我运行脚本时,什么都没有打印出来。似乎 for 循环被跳过了。我做了些愚蠢的事吗?谢谢你的帮助。

local Questions = {
Q1 = {"魔法词是什么?", "乳液"}, --Q,A
Q2 = {"有人爱你吗?", "没有"}
}

for i = 1,#Questions do
local number = math.random(1,#Questions)
local q = Questions["Q" .. number][1]
local a = Questions["Q" .. number][2]
print("HI")
print(q .. a)
end

io.read()
点赞
用户1009479
用户1009479

#运算符只在序列中有效,即使用12等索引的类似数组的表。但是你的表Questions不是序列。你可以这样做:

local Questions = {
    {"魔术词是什么?", "lotion"}, --Q, A
    {"有人爱你吗?", "no"}
}

for i = 1, #Questions do
    local number = math.random(1, #Questions)

    local q = Questions[number][1]
    local a = Questions[number][2]
    print("嗨")
    print(q .. a)
end
2014-02-16 02:50:11
用户142162
用户142162

原因是长度操作符(#)未定义非从1开始的序列索引的表。按照文档所述:

除非提供了⼀个__len元⽅法,否则仅当表是序列时,即正整数键的集合对于某些整数n等于{1..n}时,才定义表t的长度。在这种情况下,n就是其⻓度。

要修复您的代码,只需删除您的表键上的“Q”前缀:

local Questions = {
    {"What is the magic word?", "lotion"}, --Q,A
    {"Does anyone love you?", "no"}
}

for i = 1,#Questions do
    local number = math.random(1,#Questions)
    local q = Questions[number][1]
    local a = Questions[number][2]
    print(“HI”)
    print(q .. a)
end
2014-02-16 02:50:18