Corona 运行时错误 "attempt to concatenate field '?' (a nil value)"
Corona Runtime Error "attempt to concatenate field '?' (a nil value)"
我在我的移动应用程序移交项目中有这个 8 个问题的调查。起初 corona 没有提示我任何错误消息,应用程序运行正常,但是当我向它添加 2 个问题时,我开始收到此消息错误
我不确定为什么错误是 "a nil value" 但我的代码看起来像这样。(第 662 行到 678 行)
function checkEBASComplete()
local tempScore = 0
for i = 1, 10 do
print("EBAS:"..ebasRating_Arr[i])
tempScore = tempScore + ebasRating_Arr[i]
if (ebasRating_Arr[i] == -1) then
ebasScore = 0
ebasScore_text.text = "Test Incomplete"
else
ebasScore = tempScore
ebasScore_text.text = tostring(ebasScore)
end
end
tempScore = 0
end
checkEBASComplete()
我在第 110 行有类似的内容。我只是在后面添加了 2 个“-1”
local ebasRating_Arr = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}
有人能帮我解决这个问题吗?感谢所有帮助 :D
新问题---------------------------------------- ----------
这是我第 705 - 711 行的代码
function saveResults()
local q = [[UPDATE EBAS_DEP SET rating1=']]..ebasRating_Arr[1] .. [[',rating2=']] .. ebasRating_Arr[2] .. [[',rating3=']] .. ebasRating_Arr[3] .. [[',rating4=']] .. ebasRating_Arr[4] .. [[',rating5=']] .. ebasRating_Arr[5] .. [[',rating6=']] .. ebasRating_Arr[6] .. [[',rating7=']] .. ebasRating_Arr[7] .. [[',rating8=']] .. ebasRating_Arr[8] .. [[',rating9=']] .. ebasRating_Arr[9] .. [[',rating10=']] .. ebasRating_Arr[10] .. [[',rating11=']] .. amtRating_Arr[1] .. [[',rating12=']] .. amtRating_Arr[2] .. [[',rating13=']] .. amtRating_Arr[3] .. [[',rating14=']] .. amtRating_Arr[4] .. [[',rating15=']] .. amtRating_Arr[5] .. [[',rating16=']] .. amtRating_Arr[6] .. [[',rating17=']] .. amtRating_Arr[7] .. [[',rating18=']] .. amtRating_Arr[8] .. [[',rating19=']] .. amtRating_Arr[9] .. [[',rating20=']] .. amtRating_Arr[10] .. [[',rating21=']] .. amtRating_Arr[11] .. [[',ebas_score=']] .. ebasScore ..[[',amt_score=']] .. amtScore .. [['WHERE id=']].. _G.EBAS_ID..[[';]]
db:exec( q )
print(db:errcode(), db:errmsg())
end
当您的 ebasRating_Arr
对于 checkEBASComplete
函数内的 for 循环来说太短时,就会发生错误。您原来的 table 只有 8 个条目,但您的 for 循环检查了 table 的 10 个条目。这意味着当您尝试访问 9. 条目时会发生错误,因为它不存在。
我建议将固定 for 循环从 1 to 10
更改为相对 for 循环 1 to the end of the array
。这适用于 #array
(或 Lua 中的 table)运算符。您的代码如下所示:
function checkEBASComplete()
local tempScore = 0
for i = 1, #ebasRating_Arr do -- Changed to relative for-loop
print("EBAS:"..ebasRating_Arr[i])
tempScore = tempScore + ebasRating_Arr[i]
if (ebasRating_Arr[i] == -1) then
ebasScore = 0
ebasScore_text.text = "Test Incomplete"
else
ebasScore = tempScore
ebasScore_text.text = tostring(ebasScore)
end
end
tempScore = 0
end
我在我的移动应用程序移交项目中有这个 8 个问题的调查。起初 corona 没有提示我任何错误消息,应用程序运行正常,但是当我向它添加 2 个问题时,我开始收到此消息错误
function checkEBASComplete()
local tempScore = 0
for i = 1, 10 do
print("EBAS:"..ebasRating_Arr[i])
tempScore = tempScore + ebasRating_Arr[i]
if (ebasRating_Arr[i] == -1) then
ebasScore = 0
ebasScore_text.text = "Test Incomplete"
else
ebasScore = tempScore
ebasScore_text.text = tostring(ebasScore)
end
end
tempScore = 0
end
checkEBASComplete()
我在第 110 行有类似的内容。我只是在后面添加了 2 个“-1”
local ebasRating_Arr = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}
有人能帮我解决这个问题吗?感谢所有帮助 :D
新问题---------------------------------------- ----------
function saveResults()
local q = [[UPDATE EBAS_DEP SET rating1=']]..ebasRating_Arr[1] .. [[',rating2=']] .. ebasRating_Arr[2] .. [[',rating3=']] .. ebasRating_Arr[3] .. [[',rating4=']] .. ebasRating_Arr[4] .. [[',rating5=']] .. ebasRating_Arr[5] .. [[',rating6=']] .. ebasRating_Arr[6] .. [[',rating7=']] .. ebasRating_Arr[7] .. [[',rating8=']] .. ebasRating_Arr[8] .. [[',rating9=']] .. ebasRating_Arr[9] .. [[',rating10=']] .. ebasRating_Arr[10] .. [[',rating11=']] .. amtRating_Arr[1] .. [[',rating12=']] .. amtRating_Arr[2] .. [[',rating13=']] .. amtRating_Arr[3] .. [[',rating14=']] .. amtRating_Arr[4] .. [[',rating15=']] .. amtRating_Arr[5] .. [[',rating16=']] .. amtRating_Arr[6] .. [[',rating17=']] .. amtRating_Arr[7] .. [[',rating18=']] .. amtRating_Arr[8] .. [[',rating19=']] .. amtRating_Arr[9] .. [[',rating20=']] .. amtRating_Arr[10] .. [[',rating21=']] .. amtRating_Arr[11] .. [[',ebas_score=']] .. ebasScore ..[[',amt_score=']] .. amtScore .. [['WHERE id=']].. _G.EBAS_ID..[[';]]
db:exec( q )
print(db:errcode(), db:errmsg())
end
当您的 ebasRating_Arr
对于 checkEBASComplete
函数内的 for 循环来说太短时,就会发生错误。您原来的 table 只有 8 个条目,但您的 for 循环检查了 table 的 10 个条目。这意味着当您尝试访问 9. 条目时会发生错误,因为它不存在。
我建议将固定 for 循环从 1 to 10
更改为相对 for 循环 1 to the end of the array
。这适用于 #array
(或 Lua 中的 table)运算符。您的代码如下所示:
function checkEBASComplete()
local tempScore = 0
for i = 1, #ebasRating_Arr do -- Changed to relative for-loop
print("EBAS:"..ebasRating_Arr[i])
tempScore = tempScore + ebasRating_Arr[i]
if (ebasRating_Arr[i] == -1) then
ebasScore = 0
ebasScore_text.text = "Test Incomplete"
else
ebasScore = tempScore
ebasScore_text.text = tostring(ebasScore)
end
end
tempScore = 0
end