【Lua_数据类型】赋料扬雄敌,诗看子建亲。这篇文章主要讲述Lua_数据类型相关的知识,希望能为你提供帮助。
-- 数据类型
--[[
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
--]]
print(type("hello world"))
print(type(10.4*3))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(x)))-- nil 空
tab1 = {key1 = "var1",key2 = "var2","var3"}
for k,v in pairs(tab1) do
print(k .. "-" .. v)
endtab1.key1 = nil
for k,v in pairs(tab1) do
print(k .. "-" .. v)
end
--[[
pairs 和 ipairs区别pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil
ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出
--]]
-- boolean 布尔
print(type(true))
print(type(false))
print(type(nil))
if false or nil then
print("至少有一个是true")
else
print("false 和 nil 都为false")
end-- number 数字
print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(2e-1))
print(type(7.82633256e-06))-- string 字符串
string1 = "this is string1"
string2 = "this is string2"html = [[
<
html>
<
head>
<
/head>
]]print(string1)
print(string2)
print(html)print("2" + "6")
print("2" + 6)
print("2 + 6")
print("-2e2" * "6")
print("error" .. 1)
print("a" .. "b")-- #来计算字符串的长度,放到字符串的前面
len = "www.lstudy.top"
print(#len)
print(#"www.baidu.com")-- table 表
-- 创建一个空表
local tbl1 = {}-- 直接初始化表
local tbl2 = {"apple","pear","orange","grape"}-- 不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k,v in pairs(a) do
print(k .. ":" .. v)
endlocal tbl = {"apple","pear","orange","grape"}
for key,val in pairs(tbl) do
print("key",key,"val",val)
end-- table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil
a3 = {}
for i = 1,10 do
a3[i] = i
end
a3["key"] = "value"
print(a3["key"])
print(a3["none"])-- function 函数function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))-- function 可以以匿名函数(anonymous function)的方式通过参数传递function testFun(tab,fun)
for k,v in pairs(tab) do
print(fun(k,v));
end
endtab = {key1 = "val1",key2 = "val2"};
testFun(tab,
function(key,val) --匿名函数
return key .. "=" .. val;
end
);
--[[
thread 线程
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,
可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停
--]]--[[
userdata 自定义类型
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数
据(通常是 struct 和 指针)存储到 Lua 变量中调用。
--]]
推荐阅读
- 性能工具之Jmeter扩展函数及压测ActiveMQ实践
- 带你掌握java反序列化漏洞及其检测
- 本图文详细教程教你win7与win10哪一个比较好
- 本图文详细教程教你如何取消电脑开机密码
- 本图文详细教程教你windows10企业版激活
- 本图文详细教程教你激活windows10
- 本图文详细教程教你windows10的映像文件还原系统
- 本图文详细教程教你激活码激活win10系统
- 本图文详细教程教你windows10内存测试