为什么数字不能和nil比大小,这是编程的什么规则?

2026-04-01 20:091阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计440个文字,预计阅读时间需要2分钟。

为什么数字不能和nil比大小,这是编程的什么规则?

pythona={51, 31, 4, 22, 23, 45, 23, 43, 54, 22, 11, 34}colors={white, white, white, white, white, white, white, white, white, white, white, white, white, white, white, white, white}try: status, exception=pcall(f)

为什么数字不能和nil比大小,这是编程的什么规则?

a={51,31,4,22,23,45,23,43,54,22,11,34} colors={"white","white","white","white","white","white","white","white","white","white","white","white","white","white","white","white","white"} function try(f, catch_f) local status, exception = pcall(f) if not status then catch_f(exception) end end function refreshColors(yellowEndIndex,redIndex,blueIndex) for ccnt=1,table.getn(a),1 do if ccnt < yellowEndIndex then colors[ccnt] = "yellow" elseif ccnt == redIndex then colors[ccnt] = "red" elseif ccnt == blueIndex then colors[ccnt] = "blue" else colors[ccnt] = "white" end end end try(refreshColors, function(e) print("Error Occured - "..e) end) refreshColors(1,1,1) print(colors[1])

当调用refreshColors()函数时,它会抛出异常并且错误消息是“Error Occured – trial.lua:11:尝试将数字与nil进行比较”.尽管在refreshColors()函数中没有这样的比较,为什么会发生异常?

错误在第11行,这意味着:

if ccnt < yellowEndIndex then

你有一个数字的比较.我们知道ccnt是一个数字(它在循环开始时初始化),所以yellowEndIndex必须是nil. 1<零是无稽之谈,所以这是一个错误. 由于错误消息以“Error Occured – ”开头,我们知道它必须来自您的try函数错误处理程序.这是有道理的.你打电话:

try(refreshColors, function(e) print("Error Occured - "..e) end)

然后尝试调用:

pcall(f)

其中f是refreshColours.这将调用refreshColours而不带任何参数,即所有参数都初始化为nil.当然,调用带有nil值的refreshColouts自然会尝试将1(ccnt)与nil(yellowEndIndex)进行比较!

你可能想修改你的try函数,如下所示:

function try(f, catch_f, ...) local status, exception = pcall(f, unpack(arg)) if not status then catch_f(exception) end end

所以你可以这样称呼:

try(refreshColours, function(e) print("Error Occured - "..e) end), 1, 2, 3);

将1,2和3作为参数传递给refreshColours.

本文共计440个文字,预计阅读时间需要2分钟。

为什么数字不能和nil比大小,这是编程的什么规则?

pythona={51, 31, 4, 22, 23, 45, 23, 43, 54, 22, 11, 34}colors={white, white, white, white, white, white, white, white, white, white, white, white, white, white, white, white, white}try: status, exception=pcall(f)

为什么数字不能和nil比大小,这是编程的什么规则?

a={51,31,4,22,23,45,23,43,54,22,11,34} colors={"white","white","white","white","white","white","white","white","white","white","white","white","white","white","white","white","white"} function try(f, catch_f) local status, exception = pcall(f) if not status then catch_f(exception) end end function refreshColors(yellowEndIndex,redIndex,blueIndex) for ccnt=1,table.getn(a),1 do if ccnt < yellowEndIndex then colors[ccnt] = "yellow" elseif ccnt == redIndex then colors[ccnt] = "red" elseif ccnt == blueIndex then colors[ccnt] = "blue" else colors[ccnt] = "white" end end end try(refreshColors, function(e) print("Error Occured - "..e) end) refreshColors(1,1,1) print(colors[1])

当调用refreshColors()函数时,它会抛出异常并且错误消息是“Error Occured – trial.lua:11:尝试将数字与nil进行比较”.尽管在refreshColors()函数中没有这样的比较,为什么会发生异常?

错误在第11行,这意味着:

if ccnt < yellowEndIndex then

你有一个数字的比较.我们知道ccnt是一个数字(它在循环开始时初始化),所以yellowEndIndex必须是nil. 1<零是无稽之谈,所以这是一个错误. 由于错误消息以“Error Occured – ”开头,我们知道它必须来自您的try函数错误处理程序.这是有道理的.你打电话:

try(refreshColors, function(e) print("Error Occured - "..e) end)

然后尝试调用:

pcall(f)

其中f是refreshColours.这将调用refreshColours而不带任何参数,即所有参数都初始化为nil.当然,调用带有nil值的refreshColouts自然会尝试将1(ccnt)与nil(yellowEndIndex)进行比较!

你可能想修改你的try函数,如下所示:

function try(f, catch_f, ...) local status, exception = pcall(f, unpack(arg)) if not status then catch_f(exception) end end

所以你可以这样称呼:

try(refreshColours, function(e) print("Error Occured - "..e) end), 1, 2, 3);

将1,2和3作为参数传递给refreshColours.