#lua 变量类型

  • nil (空类型)
  • number (数值)
  • boolean (布尔)
  • string (字符串)
  • table (表)
  • userdata (自定义类型)
  • function (函数)
  • thread (线程)

1. nil

lua中nil表示无效的值。一些未初始化的变量也会被默认赋值为nil。

2. number

lua中没有整数类型。number用于表示双精度浮点类型(double)。

3. boolean

boolean 有两个可选值 true和false。但是要注意的是,在lua中 false和 nil 表示假,而其余都表示真,与c语言不同。

local a = 0;
  if a then
    print("test lua booblean")
end
--输出:test lua booblean

4. string

lua中的字符串是一种字符串序列,不是类似于c语言中的字符数组。当字符串中存在多行的时候可以使用[[]]符号来表示。在[[]]中的转义字符不会被解读。在Lua中连接两个字符串,可以使用操作符“..”(两个点)。如果其任意一个操作数是数字的话,Lua会将这个数字转换成一个字符串。在Lua中,字符串是不可变的值,连接操作符只会创建一个新字符串,而不会对其原操作数进行任何修改。

  local html = [[
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>账号登录</title>
</head>
</html>
  ]]
print(html);

5. table

table类型是一种关联数组,可以使用整数来索引也可以使用字符串来索引。table使用{}来进行初始化,初始化完成后赋值给变量,是将自己的引用存储在变量中。

-------table的两种构造方式
--1.最简单的构造式就是一个空构造式{},用于创建一个空table。构造式还可以用于初始化数组,数组的下标从1开始
local name = {"Anna", "Lucy", "Andy", "Lucas"}
print(name[1])  ----Anna
--2.Lua还提供了一种特殊的语法用于初始化table
local num = {x=10, y=20}   ---等价于 local num = {["x"] = 10, ["y"] = 20}
print(num.x)      -------10;
print(num["x"]);  ------10;
local a = {};
a.x = 10;
local b = a;
print(b.x);       --------10
b.x = 20;
print(a["x"]);    --------20
local a = {
    a=1,
	  b=2,
    c=3,
    d=4,
    e
}
local b = {
    1,
    2,
    3,
    4,
    5
}
  
print(a.a, a.b, a.c, a.d, a.e);        --------1 2 3 4 nil
print(b[1], b[2], b[3], b[4], b[5]);   --------1 2 3 4 5
-------------table.getn(b) 等价于#b 但是table.getn 和 # 只能表示key必须是有序的,索引是从1开始的table
-------------a不是有序的table, b是有序的table。有序的table可以使用 table[n](n是整数来表示)
table.getn(b)                          --------5
table.getn(a)                          --------0

6. function

在Lua中,函数被当做值来对待。这表示函数可以存储在变量中,可以通过参数传递给其它函数,还可以作为其它函数的返回值。

7. userdata

8. thread