Lua快速入门,基础,适用有编程基础

Lua基础入门,适用有编程基础

Lua基础

适用于有编程基础,C、Java、JS、python等

安装

  • 源码 http://www.lua.org/ftp/
  • 二进制文件 http://luabinaries.sourceforge.net/download.html

下载系统对应的二进制文件,我这里下载的是Windows x64 可执行文件: lua-5.4.2_Win64_bin.zip
解压二进制文件后,配置全局环境变量即可运行,(建议重启)。
控制台输入 lua54 后(注:下载的是54版本),可以进入 lua 环境表示成功

变量

Lua中默认是全局变量,其他文件可以直接使用,加 local 关键字的才是局部变量

  -- 全局变量
  a = 1
  b = "哈哈"
  -- 局部变量
  local c = 3
  • nil

在Lua中 没有被声明的变量都是 nil ,nil是一种类型,相当于其他语言中的 null

  a,b,c = 1,2 -- lua赋值方式,a =1; b = 2; c = nil
  print(c) -- nil
  • number

在Lua中支持16进制表示法和科学计数法

  a = 0x11 -- 17
  b = 2e10 -- 20000000000.0
  • string

在Lua中可以用单引号或双引号表示字符串,而且支持转义字符
也可以用两个中括号 [[]] 表示字符串,内容原封不动的输出,转义字符不会被修改
链接两个字符串是用两个点(…)
可以用tostring和tonumber转换字符串和数值,转换失败是nil

  a = "abcd\njuan" -- 转义字符会被解析
  b = 'ojyanskw'
  c = [[sadasd
    \niasd
    owjads
    asd\nw
    awasd
  ]]
  print(a..b) -- 连接字符串

常用方法

  s = "abcdefg"
  print(string.char(0x30)) -- ASCLL 生成字符
  print(string.byte(s, 2)) -- 取出第二位的十进制表示
  • table 类似于 数组

可以通过下标取值,但是在lua中,下标是从 1 开始的 ,也可以通过下标赋值
在Lua中,通过 # 获取 table 中的长度

  a = {1, "ac", {}, function() end}
  print(a[2]) -- ac
  print(a[0]) -- nil
  a[5] = 567
  print(a[5]) -- 567
  print(#a) -- 获取长度 5

常用方法

  a = {1, "ac", {}, function() end}
  table.insert(a, "d") -- 插入
  table.insert(a, 2, "d") -- 在第二个位置插入
  table.remove(a, 2) -- 移出第二个元素并返回

使用字符串当table下标
需要引号括起来取值,如果下标符合变量名称规范可以直接 .下标 取值

  a = {
    a = 1,
  	b = "asd",
    c = {},
    d = function() end,
    [",:"] = 087, -- 不变量名称规范的下标
  }
  a["gif"] = "opiuy" -- 赋值
  a.n = 123 -- 赋值
  print(a["b"])
  print(a.a) -- 取符合变量名称规范的下标的值
  print(a[",:"])
  print(a.gif)
  print(a["n"])
  • 真和假 true false

在Lua中,不等于是 ~= 符号表示
在lua中,and or not 表示 与 或 非

  a = true
  b = false
  print(1>2)
  print(1<2)
  print(1>=2)
  print(1<=2)
  print(1==2)
  print(1~=2) -- 不等于
  print(a and b) -- 第一个值为真返回第二个值,第一个值为假返回第一个值
  print(a or b) -- 第一个值为假返回第二个值,第一个值为真返回第一个值
  print(not a) -- 非
  print(0 > 10 and "yes" or "no") -- no 相当于三元 

注意: 在Lua中,只有 false 和 nil 代表假,数字0表示真

运算符

基本加减乘除都支持

  • 幂运算 ^
  print(10^5) -- 100000.0
  • 左移 右移
  print(1<<3) -- 8
  print(8>>3) -- 1

函数

函数声明可以用 xx = function() end 或者 function xx() end
函数默认返回 nil ,没有传参的参数也是 nil

  function f(a, b,c)
    print(a,b,c) -- 1, 2, nil
  end
  f(1,2)

函数可以返回多个值

  function f(a, b)
    return a, b + 2
  end
  i, j = f(1,2)
  print(i, j)  -- 1     4

全局表 _G

它是table类型,所有的全局变量都在全局表中

  a = 1
  print(_G["a"])
  print(_G["table"]["insert"])

分支判断

  if 1 > 4 then
    print("1>5");
  elseif 1 < 5 then
    print("1<5");
  else
    print("no");
  end

循环

  • for
    在Lua的for循环中,改变不了循环值 i
  -- 初始值, 到达步, 步长递增(可省略,默认步长1)
  for i = 1, 10, 2 do
    print(i)
    i = 1 -- 不会改变 i 值,表示 local i = 1
    if i == 5 then break end -- 结束循环
  end

泛型for循环

  a = {"one", "two", "three"}
  for i, v in ipairs(a) do
      print(i, v)
  end
  -- i表示下标,v表示元素值
  • while
  n = 10
  while n>1 do
    if n==5 then
      break
    end
    print(n)
    n = n-1 -- lua中,没有自增自减运算符
  end

注:break 可以结束循环

你可能感兴趣的:(lua,lua,开发语言)