Lua_数据类型

【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 变量中调用。 --]]


    推荐阅读