Lua问题与争论

时间:2013-01-25 22:13:43

标签: 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)

1 个答案:

答案 0 :(得分:5)

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

顺便说一下,这个条件完全没必要。 tonumber将检查其参数是否为数字,并在需要时返回。如果参数无法转换为数字,它将返回nil。所以只需使用:

distance = tonumber(args[1])

您甚至不需要检查args的长度;如果未提供参数,则为niltonumber将返回nil。因此,只需检查distance是否为nil