美文网首页
lua--关于#符号的使用问题

lua--关于#符号的使用问题

作者: 梦心DH | 来源:发表于2018-04-10 22:50 被阅读0次

一、主要作用

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

相关文章

  • lua--关于#符号的使用问题

    一、主要作用 1. 获取字符串的长度 2. 获取一个数值键值(从键值1开始)的表(table)长度 二、注意事项...

  • Understand synopsis in manpage

    使用 man 查看命令时对 SYNOPSIS 中各种符号的意义产生困惑,关于 [ ] ... | 这些符号的含义好...

  • ES6系列 (八)符号(Symbol)

    目标 使用符号作为常量 使用符号作为对象键 使用全局符号创建行为钩子 使用公知符号修改对象行为 符号symbol ...

  • Symbols in XCode

    最近项目上遇到一个关于Debug Symbol泄露方面的问题:使用nm命令可以显示二进制目标文件的符号表,造成信息...

  • Kotlin基础-标签

    关于标签 在kotlin中使用过标识符跟@符号来定义一个标签,使用@符号后面跟标识符来引用一个标签在kotlin中...

  • Spring Boot中使用Lombok报错:找不到符号问题

    Spring Boot中使用Lombok报错:找不到符号问题 一、问题 对于一些实体类,当使用其 Getter 和...

  • 符号与链接 (2)

    符号与链接 (2) 遇到的问题 关于xcconfigxconfig编写指南[https://www.yuque.c...

  • Day57+5组+阿洋洋+《高效人士用超级笔记术》读书笔记

    整合笔记方法3:使用符号 为什么要使用符号? 简单、快速记录大量信息 怎样有效使用符号? 建立一套自己的符号系统,...

  • Mybatis 转义

    ibatis 中需要对 井号和美元符号转义。使用 ## 代替#,使用$$ 代替 $。今天遇到的问题: 在 mysq...

  • $符号的使用

    查看某端口号程序的所有进程号 $(lsof -ti:8001) 杀某端口号定的进程 kill -9 $(lsof ...

网友评论

      本文标题:lua--关于#符号的使用问题

      本文链接:https://www.haomeiwen.com/subject/ediwhftx.html