使用「#&引用;运算符来计算Lua中表格的长度?
当我使用使用「#&引用;运算符来计算Lua中表格的长度?,lua,lua-table,Lua,Lua Table,当我使用#计算表的长度时,我有一个问题。例如: local t = {"a", "b"} local t1 = {"a", nil} print(#t) -- 2 print(#t1) -- 1 有人能告诉我为什么吗?除非定义了\uu len元方法,运算符只能在序列表上操作 序列是一个表,对于某些非负整数n,其正数字键集等于{1..n} 在您的示例中: t是长度为2的序列 相当于local t1={“a”},因此t1是一个长度为1的序列 t1不是序列,因此未定义#
#
计算表的长度时,我有一个问题。例如:
local t = {"a", "b"}
local t1 = {"a", nil}
print(#t) -- 2
print(#t1) -- 1
有人能告诉我为什么吗?除非定义了
\uu len
元方法,
运算符只能在序列表上操作
序列是一个表,对于某些非负整数n
,其正数字键集等于{1..n}
在您的示例中:
t
是长度为2
的序列
相当于
local t1={“a”}
,因此t1
是一个长度为1
的序列
t1
不是序列,因此未定义#t1
。local t1={nil,“a”}t1不是序列,这是否意味着#t1返回错误的长度。@user1723404对于非序列的表,没有约定“正确”的长度。实际上,对于非序列,Lua可能会为具有相同条目的表返回不同的结果。例如,如果您测试localt1={nil,“a”};打印(#t1)
您可能会得到2
。但是如果你测试localt1={};t[1]=nil;t[2]=“a”;打印(#t1)
您可能会得到0
@user1723404。#t1
未定义,表示它没有正确的值。特别是,在不同的Lua实现中可能会得到不同的价值。
local t = {"a", "b"}
local t1 = {nil, "a"}
print(#t) -- 2
print(#t1) -- 2
local t = {"a", "b"}
local t1 = {"a", nil}
local t1 = {nil, "a"}