一、主要作用
1. 获取字符串的长度
local str = "Test";
print(#str); -- 输出结果: 5
2. 获取一个数值键值(从键值1开始)的表(table)长度
-- 数值键值表
local t1 = {
"a", "b", "c",
};
print(#t1); -- 输出结果: 3
local t2 = {
[0] = "000",
[1] = "a",
[2] = "b",
[3] = "c",
};
print(#t2); -- 输出结果: 3
-- 非完全数值键值表
local t3 = {
[1] = "000", -- 数值键值
a = "a",
b = "b",
c = "c",
};
print(#t3); -- 输出结果: 1
二、注意事项
1. 当所获取的table中存在nil时,#返回的数值是无意义的。
<1> 初始化中包含nil值的情况
(1) 当初始化table时,数值键值首部包含nil值:
local t1 = {
nil, "a", "b", nil, "c",
};
print(#t1); -- 输出结果: 5
(2) 当初始化table时,数值键值中间包含nil值:
local t2 = {
"a", "b", nil, nil, "c",
};
print(#t2); -- 输出结果: 5
(3) 当初始化table时,数值键值首部和中间包含nil值:
local t3 = {
nil, "a", "b", nil, "c",
};
print(#t3); -- 输出结果: 5
(4) 当初始化table时,数值键值中间和尾部包含nil值:
local t4 = {
"a", "b", nil, "c", nil,
};
print(#t4); -- 输出结果: 2
(5) 当初始化table时,数值键值首部、中间和尾部包含nil值:
local t5 = {
nil, "a", "b", nil, "c", nil,
};
print(#t5); -- 输出结果: 3
<2> 直接将table中的某个键值,置为nil值的情况
(1) 当初始化table为空{}时,设置数值键值包含nil值:
local t1 = {};
t1[1] = nil;
t1[2] = "a";
t1[3] = "b";
print(#t1); -- 输出结果: 0
local t2 = {};
t2[1] = "a";
t2[2] = nil;
t2[3] = "b";
print(#t2); -- 输出结果: 1
local t3 = {};
t3[1] = "a";
t3[2] = nil;
t3[3] = "b";
t3[4] = "c";
print(#t3); -- 输出结果: 4
local t4 = {};
t4[1] = "a";
t4[2] = "b";
t4[3] = nil;
print(#t4); -- 输出结果: 2
(2) 当初始化table时,其中的数值键值长度<所要手动设置的值的长度:
local t1 = {1, 2, 3};
t1[1] = nil;
t1[2] = "a";
t1[3] = "b";
t1[4] = "c";
print(#t1); -- 输出结果: 4
local t2 = {1, 2, 3};
t2[1] = "a";
t2[2] = nil;
t2[3] = "b";
t2[4] = "c";
print(#t2); -- 输出结果: 4
(3) 当初始化table时,其中的数值键值长度=所要手动设置的值的长度:
local t1 = {1, 2, 3, 4};
t1[1] = nil;
t1[2] = "a";
t1[3] = "b";
t1[4] = "c";
print(#t1); -- 输出结果: 4
local t2 = {1, 2, 3, 4};
t2[1] = "a";
t2[2] = "b";
t2[3] = nil;
t2[4] = "c";
print(#t2); -- 输出结果: 4
local t3 = {1, 2, 3, 4};
t3[1] = "a";
t3[2] = "b";
t3[3] = "c";
t3[4] = nil;
print(#t3); -- 输出结果: 3
local t4 = {1, 2, 3, 4};
t4[1] = "a";
t4[2] = nil;
t4[3] = "b";
t4[4] = nil;
print(#t4); -- 输出结果: 1
local t5 = {1, 2, 3, 4};
t5[1] = nil;
t5[2] = "a";
t5[3] = "b";
t5[4] = nil;
print(#t5); -- 输出结果: 3
(4) 当初始化table时,其中的数值键值长度>所要手动设置的值的长度:
local t1 = {1, 2, 3, 4, 5};
t1[1] = nil;
t1[2] = nil;
t1[3] = nil;
t1[4] = nil;
print(#t1); -- 输出结果: 5