Lua问题与争论

Mir*_*azy 2 lua type-conversion minecraft

这个lua代码出了什么问题,无论我输入什么内容,我的参数都不会转换为数字或被识别为数字?

我试过"distance = tonumber(arg [0])或0".

--Args

local args = {...}

--Variables

local distance = 0
if #args > 0 and type(args[0])=="string" then args[0] = tonumber(args[0]) end
if #args > 0 and type(args[0])=="number" then distance = args[0] end
print("Distance: "..distance)
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 5

Lua为其数组使用基于1的索引.args[0]nil,因此有类型"nil".

顺便说一句,这种情况完全没必要.tonumber将检查其参数是否为数字,并在需要时简单地返回.nil如果参数无法转换为数字,它将返回.所以只需使用:

distance = tonumber(args[1])
Run Code Online (Sandbox Code Playgroud)

你甚至不需要检查长度args; 如果没有提供任何参数,它将会nil,tonumber并将返回nil.因此,只是检查,看看是否distancenil.