Lua 基础之数据类型
2017-07-16 17:44
155 查看
获取类型
Lua 有 nil,boolean,number,string,table,function 和 userdata 七种数据类型。我们可以用 type() 函数来返回一个变量的类型,返回值是 string。print(type(10)) --number print(type(nil)) --nil print(type(true)) --boolean print(type("hello")) --string print(type(print)) --function print(type({})) --table print(type(type)) --function print(type(type(10))) --number
弱类型
Lua的变量无需定义,变量的类型也可以随时更换。value=10 print(value,type(value)) value="this is a string" print(value,type(value)) value=print value(value,type(value))
数值类型、布尔类型、空类型
Lua 中只有 number 来保存数值,没有整型和浮点型之分。Lua 中除了nil 和 false为 假之外,其余全是真,包括 0。
Lua 中没赋值的变量为 nil,我们也可手动给变量赋 nil,相当于删除这个变量。
--boolean --除了false和nil之外,其它值都是true print(10>10) --false if a then print([=[true]=]) else print([=[false]=]) --run end a=0 if a then print("a is true") --run else print("a is false") end --number --只有浮点数,可用科学计数法 num=0.234 num = num + 1 print(num) --1.234 num=-1.01e-2 print(num) -- -0.0101 print(10e3) --10000.0 print(-2.34456e5) -- -234456.0 --nil --没声明的变量的值都为nil、手动给变量赋nil相当于删除该变量 print(x) --nil print(x == nil) -- true x=100 print(x == nil) -- false x=nil print(x == false) -- false print(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转int print(string.byte(str,0,5)) --104 101 ... --int转char print(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) -- 20 print(1.234-"-10") --11.234 print("10"*"11") --110 --print("h" + 1) -- error --print(10 + false) -- error --print(10+nil) --error --使用..转换成字符串 print("10"..10) --1010 print(10..10) --error --print("hello" .. false) -- error --print("hello"..nil) --error
table类型
table 是 lua 里面唯一的数据结构,函数、对象等都是用 table 实现的。table 有数字索引和键值对两种存储方式,且两者可以混用。数字索引从 1 开始。可以用 ipairs 迭代器遍历数字索引的元素,用 pairs 迭代器遍历所有元素。--table --table是lua唯一的数据结构,是一种键值存储方式,其实lua中的函数,对象等等都是table arr={} 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 4 arr = { x = 10, y = "hello" } print(arr.x, arr["x"]) --10 10 arr['y']=true print(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]) --first print(arr[j]) --second print(arr[k]) --third print(arr[tonumber(j)]) --first print(arr[tonumber(k)]) --first --迭代器 for k,v in pairs(arr) do print(k,v) end arr = { 5, 4, 3, 2, 1 } for i,v in ipairs(arr) do print(i,v) end
相关文章推荐
- Lua学习----Lua基础数据类型
- Lua—基础分析(数据类型和函数)
- Lua语法基础(1)---简介、基本数据类型、表达式
- 0基础lua学习(二) 数据类型
- python 数据类型基础
- 重温基础,JAVA的基础数据类型
- java核心基础--jdk源码分析学习--基本数据类型
- JavaScript基础系列2---数据类型和运算符
- Java标准输入输出+基础理论+基本数据类型总结 推荐
- Redis 基础知识(5种数据类型基本操作)
- JAVA 基础之 数据类型
- C语言基础学习基本数据类型-其他整数类型
- JVM基础概念总结:数据类型、堆与栈
- 【Java基础知识】数据类型与运算符
- C++语言基础 例程 C++的数据类型和运算符
- Python基础(1):数据类型
- [零基础学JAVA]Java SE基础部分-03.标识符、数据类型,数组,方法
- Java基础知识之数据类型
- JavaScript基础1——基本语法和数据类型