欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Lua基础教程之类型与值

程序员文章站 2022-06-26 15:16:10
...

注释

单行注释 
-- 

多行注释 
--[[ 

--]]

基本数据结构

  nil

  nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值,对于全局变量和table,nil还有一个“删除”的作用,将其赋值为nil即可。

  nil作比较时,应该加上双引号""

type(X) 
nil 
type(X)==nil 
false 
type(X)=="nil" 
true

  type(X)==nil 结果为 false 的原因是因为 type(type(X))==string。

  number

  Lua 默认只有一种 number 类型 -- double(双精度)类型(默认类型可以修改 luaconf.h 里的定义),以下几种写法都被看作是 number 类型:

print(type(2)) 
print(type(2.2)) 
print(type(0.2)) 
print(type(2e+1)) 
print(type(0.2e-1)) 
print(type(7.8263692594256e-06))
输出全为 number

  boolean

  boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true:

  lua常见的逻辑运算符 and、or、not,即C#中的与&&、或||、非!

比较两个数值的大小 
(x>y) and x or y

  string

string1 = "this is string1" 
string2 = 'this is string2' 
也可以用两个方括号来表示 [[]] 
html = 
[[ 
    双括号表示字符串
]]

  在对于一个数字字符串上进行运算时,会自动将字符串转换为数字进行运算

print("2"+6) 输出 8 
print("2+6") 输出 2+6

  字符串加的操作符为 两个点 ..

print("string".."abc") 输出 stringabc

  使用#来计算字符串的长度

print(#"abcd") 输出 4 
输出多个字符串 
print("first string","second string") 
输出 first string second string

  字符串转换为数字

  函数tonumber将字符串转换为数字,当这个字符串不能转换为数字时,tonumber返回nil 数字转换为字符串 tostring或者将数字与空字符串相连接

  table

  在lua中table类似于C#中的字典,也是基于键值对来操作。

-- 创建
table tba1 = {} --空表 {} 构造表达式 
--初始化一个表 
tab2 = {key1 = 100,key2 ="value"} 
print(tab2["key1"]) 
tab3 = { "apple","pear","cccc"} 
--遍历table 
for key,val in pairs(tab3) do 
  print(key ..":" .. val) 
end 
输出 100 1:apple 2:pear 3:cccc

  不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。

  table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。

  修改table中的内容

--修改tab内容 
tab1.key1 = "abcde" 
tab1["key2"] = "mmmmm" 
print(tab1.key1) 
print(tab1["key2"]) 
--删除key值 
tab1.key1 = nil

  对于默认的key值索引,当删除时,不会移动位置

tab3 = { "apple","pear","cccc"} 
tab3[2] = nil 
for k,v in paris(tab3) do 
  print(k ..":"..v)) 
end 
输出 1:apple 3:cccc

  tab3 = nil 取消tab3对表的引用,当一个程序再也没有对一个table的引用时,lua的垃圾收集器(GC)最终会删除该table,并复用它的内存。

  table最大正索引数

table.maxn a = {} 
a[1000] = 1 
print(table.maxn(a)) ==> 1000

  function

--定义基本函数
function fact(n)
  if n == 1 then
	 return n
  else
	 return n*fact(n-1)
	end
end

print(fact(3))
--匿名函数的使用
function testFun(str,func)
  func(str)
end

function f1(str)
  print(str)
end

testFun("lua",f1)
testFun("test",f1)

 

相关标签: Lua lua