如何检查值是否为表

时间:2015-09-12 11:52:55

标签: lua lua-table

就像顾名思义一样......你不能说像

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!") 

1 个答案:

答案 0 :(得分:3)

type功能并不慢。将您的功能更新为:

function ArrayCount(arArr)
  if type( arArr ) ~= "table" then return 0 end
  return #arArr - 1
end