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 = [[
  <html>
  <head></head>
  <body>
      <a href="http://www.runoob.com/">菜鸟教程</a>
  </body>
  </html>
]]
  • 算数运算符的+就是算数中的加
> 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua内部采用一种通用的基础数据结构来表示所有数据类型,Lua语言及其精简,只有字符串和表两种最基本的数据结构。然...
    JunChow520阅读 2,340评论 0 1
  • Lua 全教程 本文目录 Lua 简介 Lua 版本 Lua 环境开发工具软件包管理分析和调试 基础概念常量和标识...
    Hello_Muay阅读 5,511评论 0 2
  • 类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 ty...
    跃千山阅读 261评论 0 1
  • 开篇 1、几个连续语句之间不需要分割符,但也可以使用分号分割。 比如: a = 1 b = 2等价于a = 1; ...
    小飞不会飞_阅读 1,064评论 2 10
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,878评论 0 38