lua-users home
lua-l archive

Why does #{nil, "sun"} output 2, whereas a={}; a[2]="sun"; print(#a) output 0?

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi, list
Here are the first code snippet and the output:
>a={nil, "sun"} --output: 2
Here are the second code snippet and the output:
>b = {}
>b[2] = "sun"
>print(#b) --output:0
Here are the third code snippet and the output:
> function printTab(tab)
>> for k,v in pairs(tab) do
>> print(k,v)
>> end
>> end
>
>type(a) == type(b) --output:true
>a == b --output: false amazing!!!
>> printTab(a) --output: 2 sun
>> printTab(b) --output: 2 sun
It's amazing that "printTab(a)" and "printTab(b)" are the same whereas
"#a" and "#b" are different (and "a == b" outputs false).
Could somebody shed some light on this question?
Best regards
Sunshilong

AltStyle によって変換されたページ (->オリジナル) /