2020-05-21-lua常用api

1.参考资料

https://www.runoob.com/lua/lua-variables.html

2.注释

-- 这是注释
print("hello")

--[[
  这是多行注释
  这是多行注释
]]--

3.约定俗成

  • 一般约定一下划线开头连接一串大写字母的名字,比如_VERSION会认作lua内部全局变量。
  • 一般情况,变量就是全局的
  • 全局变量不需声明,给一个变量赋值之后就相当于创建了这个全局变量。
  • 访问没创建的全局变量获得的值为nil,相当于js的null,如果你想删除一个全局变量,旧赋值nil。
  • nil作比较的时候加双引号:
> type(x)
nil
> type(x) == nil
false
> type(x) == "nil"
true

4.基础类型:8种

nil,boolean,number,string,function,userdata(表示任意存储在变量中的C数据结构),thread(表示执行的独立线路,用于执行协同程序,即线程),table(数组)

5.8种基础类型的使用方式

  • 可以用双引号,单引号,以及"[[]]"代表字符串
string1 = "this is string"
string2 = 'this is string'
string3 = [[
  
  
  
      菜鸟教程
  
  
]]
  • 算数运算符的+就是算数中的加
> print("2"+"3")
5
  • table类型类似于js的数组和对象
-- 创建一个空的table
local tbl1 = {}
-- 创建一个有值的table
local tbl2 = {"apple", "pear", "orange"}
local tbl3 = {1 = "a", 2 = "b", 3 = "c"}

-- table.lua脚本内容
a  = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
-- table也可以这么取值
print(a.key)
for k, v in pairs(a) do
  print(k.. " : " ..v)
end
-- 执行上述脚本
value
key : value
10 : 33
  • local声明的是局部变量

6.方法

type: 测试类型

print(type("hello"))    --> string
print(type(true))        --> boolean

赋值

a, b = 10, 11   --> a = 10; b = 11

--[[
 当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
 a. 变量个数 > 值的个数             按变量个数补足nil
 b. 变量个数 < 值的个数             多余的值会被忽略
]]
a, b, c = 0, 1   --> a = 0, b = 1, c = nil
a, b  = 0, 1, 2  --> a = 0, b = 1

计算字符串长度:用#,放在字符串前面

> len = "www.aaa.com"
> print(#len)
11
> print(#'www.aa.com')
10

for循环

-- for循环有4种:while循环,for循环,repeat...until,嵌套循环
-- 终止或跳过某循环:break(退出当前循环), goto(将程序控制点转移到下一个标签处)
-- while循环,执行前先判断条件
while(condition) do
  something()
end

-- 无线循环
while(true) do
  something()
end

-- for循环,可指定循环次数
a = {name="clw", age="15"}
for k,v in paris(a) do
  print(k,v)
end

-- repeat...until,先执行一次,然后判断条件,直到条件为真停止
repeat
  something()
until(condition)

-- table.lua脚本内容
a  = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
  print(k.. " : " ..v)
end
-- 执行上述脚本
key : value
10 : 33

-- table2.lua脚本内容
local tbl = {"a", "b", "c"}
for key, val in pairs(tbl) do
  print("key", key)
end
-- 执行结果
key   a
key   b
key   c

-- table3.lua脚本内容
a3 = {}
for i=1, 10 do
  a3[i] = i
end

if判断以及函数function

-- if

function jisuan(n) 
  if(n == 0) then
    return 1
  elseif (n<0) then
    return '0'
  else
    return n * jisuan(n-1)
  end
end
print(jisuan(5))     --> 120
jisuan2 = jisuan
print(jisuan2(5))   --> 120

你可能感兴趣的:(2020-05-21-lua常用api)