使用 # 输出的值其实是字符串所占的字节数。当字符串为英文字符时,由于每个字符只占 1 个字节,所以输出结果等同于字符串长度:
print(#"HelloWorld")
输出结果:
10
当字符串中含有中文字符时,每个中文字符占据两个字节:
print(#"你好世界")
8
print(type(type(0))) -- 结果为 string
未经赋值的全局变量与 nil 比较亦不会报错:
print(a===nil) -- 结果为 true
不同于 C/C++,在 Lua 中对 0(number) 进行逻辑判断,得到的结果也是 true。
if 0 then print("True.") else print("False.") end
运行结果将会是:True
关于"nil 作比较时应该加上双引号"的补充:
原文是使用 type(x) ==nil 做比较,这个时候的确是需要添加双引号或单引号才行,但是如果没有使用type(变量)这个形式,就不需要加引号,看下面代码:
print(x == nil) --结果为true print(x == "nil")--结果为false
tab = {"Hello","World",a=1,b=2,z=3,x=10,y=20,"Good","Bye"} for k,v in pairs(tab) do print(k.." "..v) end
如上代码输出结果存在一定规律,"Hello"、"World"、"Good"、"Bye"是表中的值,在存储时是按照顺序存储的,并且不同于其他脚本语言,Lua是从1开始排序的,因此,使用pairs遍历打印输出时,会先按照顺序输出表的值,然后再按照键值对的键的哈希值打印。
1 Hello 2 World 3 Good 4 Bye x 10 y 20 z 3 b 2 a 1
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2043Lua 数据类型
使用 # 输出的值其实是字符串所占的字节数。当字符串为英文字符时,由于每个字符只占 1 个字节,所以输出结果等同于字符串长度:
输出结果:
当字符串中含有中文字符时,每个中文字符占据两个字节:
输出结果:
2042Lua 数据类型
未经赋值的全局变量与 nil 比较亦不会报错:
2041Lua 数据类型
不同于 C/C++,在 Lua 中对 0(number) 进行逻辑判断,得到的结果也是 true。
运行结果将会是:True
2040Lua 数据类型
关于"nil 作比较时应该加上双引号"的补充:
原文是使用 type(x) ==nil 做比较,这个时候的确是需要添加双引号或单引号才行,但是如果没有使用type(变量)这个形式,就不需要加引号,看下面代码:
2039Lua 数据类型
如上代码输出结果存在一定规律,"Hello"、"World"、"Good"、"Bye"是表中的值,在存储时是按照顺序存储的,并且不同于其他脚本语言,Lua是从1开始排序的,因此,使用pairs遍历打印输出时,会先按照顺序输出表的值,然后再按照键值对的键的哈希值打印。