如何修复“尝试连接表和字符串”的错误?

我前几天问了一个类似于这个的问题,但是另一个 bug 弹出来了,“attempt to concatenate table and string”(试图连接表格和字符串)。

local questions={
    EN={
        Q2={"Transformice 的主要开发者是谁?","Tigrounette"},
        Q4={"Eminem 在 YouTube 上最受欢迎的歌曲是什么?","我爱你所以我撒谎"},
        Q6={"27 的立方根是多少?","3"},
        Q8={"π 的前 3 位数是什么?","3.141"},
        Q10={"人口最多的国家是哪个?","中国"},
        Q12={"“人”这个词的复数形式是什么?","人们"},
        Q14={"昆虫学是研究什么的科学?","昆虫"},
        Q16={"(机器人运行的) 小游戏 fight 的创造者是谁?","Cptp"},
        Q18={"护士层限制 ... 辐射","紫外线"},
        Q20={"filaria 是由 ... 引起的","蚊子"}
    }
local main = questions.EN["Q"..math.random(1,20)].."%s" -- 这里有问题
local current_answer_en = string.gsub(current_question_en,1,2)
点赞
用户869951
用户869951

questions.EN["Q"..math.random(1,20)] 是什么类型的对象?如果随机数是15,questions.EN["Q6"] 是什么类型的对象?它是一个 {"What is the cubic root of 27?","3"},是一个表格,在 Lua 中无法与字符串(在您的情况下为 "%s")连接。如果您想将其与此表格的第一个项目连接起来,那么:

local main = questions.EN["Q"..math.random(1,20)][1] .. "%s"

请注意,您需要我在 math.random function with step option?中发布的“带步骤的随机数”函数,否则您可能会得到表格 EN["Q"..something] 为空(如果随机数是奇数,在您发布的代码中)。

不确定您正在尝试使用current_question_en做什么,但是如果您尝试提取问题和答案,可以这样做:

local QA = questions.EN["Q"..math.random(1,20)] -- 这是一个表格
local question, answer = QA[1], QA[2]

另一个选择是这样建立您的表格:

local questions={
    EN={
        Q2={q="Who is ..?",   a="Tigrounette"},
        Q4={q="What is ...?", a="I love the way you lie"},
        ...
    }
}

然后您可以使用

local QA = questions.EN["Q"..math.random(1,20)] -- 这是一个表格
print("问题:", QA.q)
print("答案:", QA.a)

不确定您正在尝试使用string.gsub做什么,但是它不接受整数作为第2个和第3个参数。

2014-02-16 18:11:12