0基础lua学习(二) 数据类型
1. 命名规范
a) 区分大小写
b) 不要使用关键字命名
c) 数字、字母、下划线、不要以数字开头,避免以下划线开头,或者后面是大写字母的命名
2. 类型与值
a) nil – 空
b) boolean – 布尔
c) string – 字符串
d) function – 函数
e) table – 表
f) userdata –自定义数据类型
g) thread – 线程
函数print用来检测一个变量的类型
print(type(var))
var = 20
print(type(var))
var = "helloworld"
print(type(var))
var = print
print(type(var))
var(type(var))
var ={}
print(type(var))
1) nil
在Lua中nil表示的是一种类型,它只包含一个值nil。任何在未赋值之前都是nil.当一个全局变量赋值为nil,表示删除这个变量。
2)boolean
有两个值 true,false。 nil也表示false,其它情况都为真。
0也是真。
var= nil if var then print("true") else print("false") end
var = nil console:false
var = false console:false
var = 0 console:true
var = “” console:true
var = “helloworld” console:true
只有为false 或者nil。等于0也是true
3)number
表示实数,且只有这一种
a = 10
b= 50.2
c=5e20
4)string
表示一个字符序列,通常用单引号或者双引号
如果字符格式多,用下面这种
long_str = [====[ i am am "long", long str]====] print(long_str)
连接字符串
var ="hello".."hello"
print(var)
获取字符串长度
var ="hello".."hello"
print(var)
print(#var)
long_str = [====[ i am am
"long",
long
str]====]
print(long_str)
print(#long_str)
5)table 类似C++的map,比map繁琐
,table极大简化了使用过程
如果C++声明
Std::map<string,string> mvMap;
mvMap[“a”] = “test”
mvMap.insert(std::Map<std::string,std::string>::value_type(“b”,”test2”));
map<int, string> mapStudent;
mapStudent.insert(pair<int,string>(1,"student_one"));
lua中这样声明
t = {a = “test1”,b = “test2”}
6.thread(线程)
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
7.userdata(自定义类型)
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。