Lua表错误?
问题描述:
我正在进行一种“测验”,我希望脚本从表格中随机选择一个问题。没有错误,但是当我运行脚本时,没有任何东西被打印出来。似乎for循环只是越过了。我在做一些愚蠢的事情吗?谢谢你的帮助。Lua表错误?
local Questions = {
Q1 = {"What is the magic word?", "lotion"}, --Q, A
Q2 = {"Does anyone love you?", "no"}
}
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()
答
#
的操作者仅在有效的序列,即,与1
,2
,等等索引的数组状表。但是你的表Questions
不是一个序列。你可以这样说:
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
答
其原因,这是发生是因为长操作(#
)没有为表与不是从1开始从documentation序列索引定义:
除非给出了一个
__len
元方法,否则表t
的表的长度仅在表是一个序列时定义,也就是说,对于某个整数n,其正数字键集合等于{1..n}。在那种情况下,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
谢谢!现在它工作正常。 – user3314993
@ user3314993:很高兴听到它!如果可以,请记住[标记接受的答案](http://*.com/help/someone-answers)。 –