Lua学习笔记2-数据类型
2017-10-11 13:53
591 查看
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
1.nil
nil表示一种没有任何有效值,属于的类型也是nil。nil对于全局变量和table有一个“删除”的作用,将全局变量或者table表里的变量赋值nil就会将它删除:
table = {key1 = "val1", key2 = "val2"} print("删除前:") for k, v in pairs(table) do print(k .. ":" .. v) end table["key1"] = nil print("删除后:") for k, v in pairs(table) do print(k .. ":" .. v) end
结果:
删除前: key1:val1 key2:val2 删除后: key2:val2
2.boolean
boolean类型只有两个值:true和false,在Lua中nil和false会视为“假”,其他都会视为“真”。if false or nil then print("false和nil中有一个真") else print("两个都为假") end结果:
两个都为假
3.number
其他语言中的int、float等类型到Lua中都统一视为number。并且一下的写法都视为number:
print(12 + 1) print("12" + 1) print("12" + "1")结果
13 13.0 13.0
用+连接的两字符串会被强制转换为number型,如果不能转换则会报错。
4.string
字符串,由单引号或者双引号来表示。同时也可以使用“[[]]”来表示。
poetry = [[ 床前明月光,疑是地上霜。 举头望明月,低头思故乡。 ]] print(poetry)在[[]]里的字符串想换行可以直接使用回车键,而不使用\n,但用单、双引号表示的字符串只能用\n表示换行。
多个string字符串希望连接使用的是..,如:
>print("Hello" .. "World") HelloWorld使用#来计算字符串的长度。
>print(#"Hello") 5
5.table
table的创建是通过“构造表达式”来完成,最简单的的构造表达式是{},表示创造了一个空表。table的索引可以是字符串,同时也可以是数字。
table = {} table["key1"] = "val1" table[10] = "val2" for k, v in pairs(table) do print(k .. ":" .. v) end结果
key1:val1 10:val2table的初始索引是从1开始的。
6.function
函数是被看作是“第一类值”,函数可以存在变量中:function Sum(a, b) return a + b end print(Sum(1, 2)) Sum2 = Sum print(Sum2(2, 3))结果
3 5function可以以匿名函数的方式作为参数传递:
function Avg(tab, Count)
local sum = 0
for val in pairs(tab) do
sum = sum + val
end
return sum / Count(tab)
end
table = {1, 2, 3, 4, 5, 6, 7, 8}
print("平均数为:" .. Avg(table,
function (tab)
local count = 0
for i in pairs(tab) do
count = count + 1
end
return count
end
))
7.thread
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
8.userdata
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。相关文章推荐
- lua学习笔记一 -- 基本数据类型和操作符介绍
- lua学习笔记_注释、基本数据类型、if语句
- Lua学习笔记之数据类型
- [LUA学习笔记04]Lua语法--数据类型
- Lua学习笔记(一) —— 数据类型
- Lua学习笔记1,基本数据类型
- Lua学习笔记之数据类型
- Lua学习笔记二 数据类型及字符串操作
- lua学习笔记 - 数据类型
- lua学习笔记---值,类型
- MySQL学习笔记-数据类型与操作数据表
- Apache CXF学习笔记二-复杂数据类型
- [python学习笔记] 数据类型与语法
- 【Java学习笔记】基础知识学习1【基本输出,数据类型,基础运算符号】
- C语言学习笔记 C语言sizeof,return、数据类型
- Go语言学习笔记 --- 常量、变量、批量定义与声明、数据类型、类型别名、类型转换
- python学习笔记之-基本数据类型
- TensorFlow学习笔记2——数据类型及简单运算
- 软件构造系列学习笔记(3.1)—————数据类型和类型检查
- C++复合数据类型数组学习笔记