返回是什么,我错在哪里了(Lua)

我有两个问题,其一是Lua中的return是什么?我在互联网上搜索了很多,但是仍不知道它的作用和用途。2. 我在编写以下代码段时遇到了麻烦:

testGrade={}
testGrade.Joe = 86
testGrade.Josh = 75
testGrade.Jack = 12
testGrade.Andrew = 0
testGrade.Larry = 100
testGrade.Noah = 94
testGrade.Blakely = 67

for k,v in pairs(testGrade) do
    local maxGrade = 100
    if testGrade[grade] == 100 then
        Msg("Congratulations "..k..", you scored a "..v.." out of "..maxGrade.." getting every question right!\n");
    elseif testGrade[grade] >= 90 then
        Msg("Congratulations "..k..", you scored a "..v.." out of "..maxGrade.." getting an A!\n");
    elseif testGrade[grade] >= 80 then
        Msg(k..", you scored a "..v.." out of "..maxGrade.." getting a B.\n");
    elseif testGrade[grade] >= 70 then
        Msg(k..", you scored a "..v.." out of "..maxGrade.." getting a C, try harder next time.\n");
    elseif testGrade[grade] >= 60 then
        Msg(k..", you scored a "..v.." out of "..maxGrade.." getting a D, you need to study!\n");
    elseif testGrade[grade] == 0 then
        Msg(k..", you scored a "..v.." out of "..maxGrade.." getting NOTHING right! Did you even try?!\n");
    else
        Msg(k..", you scored a "..v.." out of "..maxGrade.." making you fail. You need to try harder and study!\n");
    end
end

我想练习编码,但是这个代码段让我卡住了。注释非常有帮助 ;)

点赞
用户258523
用户258523

return 语句用于从函数或代码块(其实就是函数)中返回值。函数和代码块可以返回多个值,因此返回语句的语法为:

stat ::= return [explist]

以上摘自 2.4.4 控制结构 的说明。

由于你这里没有函数,所以不需要在任何地方使用 return

你试图使用 testGrade[grade] 获取当前学生的成绩,但 grade 没有赋值(你没有在任何地方赋值)。循环中 k 的值是表中的键(即学生的姓名)。循环中 v 的值是表中键所对应的值(即学生的成绩)。

因此,将 for k,v in pairs(testGrade) do 改为 for student, grade in pairs(testGrade) do,并用 grade 替换所有比较中的 testGrade[grade],代码就可以正常运行了。将所有对 k 的使用替换为 student,将所有对 v 的使用替换为 grade,也能正常运行。

RetiredNinja 刚刚在评论中提到,一种更简单的更改是将比较中的 testGrade[grade] 替换为 v

2014-12-11 04:58:06