Lua 基础之数据类型
来源:互联网 发布:怎么加入淘宝优惠群 编辑:程序博客网 时间:2024/05/17 02:15
获取类型
Lua 有 nil,boolean,number,string,table,function 和 userdata 七种数据类型。我们可以用 type() 函数来返回一个变量的类型,返回值是 string。
print(type(10)) --numberprint(type(nil)) --nilprint(type(true)) --booleanprint(type("hello")) --stringprint(type(print)) --functionprint(type({})) --tableprint(type(type)) --functionprint(type(type(10))) --number
弱类型
Lua的变量无需定义,变量的类型也可以随时更换。
value=10print(value,type(value))value="this is a string"print(value,type(value))value=printvalue(value,type(value))
数值类型、布尔类型、空类型
- Lua 中只有 number 来保存数值,没有整型和浮点型之分。
- Lua 中除了nil 和 false为 假之外,其余全是真,包括 0。
- Lua 中没赋值的变量为 nil,我们也可手动给变量赋 nil,相当于删除这个变量。
--boolean--除了false和nil之外,其它值都是trueprint(10>10) --falseif a then print([=[true]=])else print([=[false]=]) --runenda=0if a then print("a is true") --runelse print("a is false")end--number--只有浮点数,可用科学计数法num=0.234num = num + 1print(num) --1.234num=-1.01e-2print(num) -- -0.0101print(10e3) --10000.0print(-2.34456e5) -- -234456.0--nil--没声明的变量的值都为nil、手动给变量赋nil相当于删除该变量print(x) --nilprint(x == nil) -- truex=100print(x == nil) -- falsex=nilprint(x == false) -- falseprint(x == nil) -- true
字符串类型
Lua 中不仅可以用单引号和双引号来表示字符串常量,还可以使用成对的中括号来表示,比如
[[hello]][=[hello]=][===[hello]===]
这个中括号表示法也可用于多行注释(Lua 的单行注释为 –),比如 --[=[this is a note]=]
。
--string--字符串使用8位编码,不可修改内容str="你好!"print(str) --乱码str="hello world"print(str)str=[[hello string ]]print(str)str=[==[hello string too]==]print(str)str='hello char\nhello char too'print(str)--string库--char转intprint(string.byte(str,0,5)) --104 101 ...--int转charprint(string.char(104,105)) --hi--查找子字符串的位置print(string.find(str,"cha",1,true))--替换子字符串s = string.gsub(str, "char", "string")print(s)--转为大写print(string.upper(s))
简单数据类型转换
Lua 简单的数据类型有 nil、number、boolean和string 四种类型。number 和 string可自动相互转换,使用算术运算符可将 string 转成 number(如果不合法会出错),使用 .. 可将 number 转成 string。
--数据类型自动转换--使用算术运算符转成数字print("10" + 10) -- 20print(1.234-"-10") --11.234print("10"*"11") --110--print("h" + 1) -- error--print(10 + false) -- error--print(10+nil) --error--使用..转换成字符串print("10"..10) --1010print(10..10) --error--print("hello" .. false) -- error--print("hello"..nil) --error
table类型
table 是 lua 里面唯一的数据结构,函数、对象等都是用 table 实现的。table 有数字索引和键值对两种存储方式,且两者可以混用。数字索引从 1 开始。可以用 ipairs 迭代器遍历数字索引的元素,用 pairs 迭代器遍历所有元素。
--table--table是lua唯一的数据结构,是一种键值存储方式,其实lua中的函数,对象等等都是tablearr={}print(arr,#arr,arr[0]) --table:地址 0 nil--table的索引从1开始arr = { 1, 2, 3, 4 }print(arr[0], arr[1], #arr, arr[#arr]) -- nil 1 4 4arr = { x = 10, y = "hello" }print(arr.x, arr["x"]) --10 10arr['y']=trueprint(arr.y, type(arr["y"])) -- true boolean--table可以用数字索引和键值对,且两者可混用arr = { }arr[10]="first"arr["10"]="second"arr["+10"]="third"i=10 j="10" k="+10"print(arr[i]) --firstprint(arr[j]) --secondprint(arr[k]) --thirdprint(arr[tonumber(j)]) --firstprint(arr[tonumber(k)]) --first--迭代器for k,v in pairs(arr) do print(k,v)endarr = { 5, 4, 3, 2, 1 }for i,v in ipairs(arr) do print(i,v)end
阅读全文
0 0
- Lua 基础之数据类型
- lua之数据类型
- Lua 基础之 Lua 程序
- Lua学习笔记之数据类型
- Lua学习笔记之数据类型
- Lua之coroutine基础
- Lua基础之语法
- Lua基础之Function
- cocos2dx之lua基础
- Lua之coroutine基础
- Lua之coroutine基础
- Lua 基础之语句
- Lua 基础之函数
- Lua 基础之迭代器
- Lua 基础之模块
- Lua基础之函数
- Lua基础之字符串
- lua基础之数组
- AVL树的 java 代码实现(待更)
- display中block、inline、inlinke-block的区别和使用方法
- Java基础3
- JDBC 复习
- JAVA中名称屏蔽的问题
- Lua 基础之数据类型
- 跟我一起学linux基础(第二天)
- POJ-1113 Wall
- 日期显示格式
- Hello
- java线程优先级
- N很大情况下的Fibonacci前四位-HDU1568(重要)
- ios-KVO
- AngularJS小案例_购物车