就像顾名思义一样......你不能说像
3[7] --> Attempt to index a number value
"fpp"[7] --> Attempt to index a string value
我知道函数type()
,但我试图避免它,因为它很慢。
if(type({}) == "table") ...
if(string.sub(tostring({}),1,5) == "table")...
function ArrayCount(arArr)
if(not arArr) then return 0 end
if(not (type(arArr) == "table")) then return 0 end
if(not (arArr and arArr[1])) then return return 0 end
local Count = 1
while(arArr[Count]) do Count = Count + 1 end
return (Count - 1)
end
ArrayCount(3)
ArrayCount("I am a string!")
答案 0 :(得分:3)
type
功能并不慢。将您的功能更新为:
function ArrayCount(arArr)
if type( arArr ) ~= "table" then return 0 end
return #arArr - 1
end