Lua语言学习:基础知识

lua 语言的基础知识,语法,数据类型,流程控制等
更新于: 2022-01-19 04:23:59

Lua 数据类型

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

注释

-- hello lua: 单行注释
print("hello lua")

--[[
 多行注释
 多行注释
 --]]
print("Weclome to visit https://js.work")

标识符

  • 可以:Lua 标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母,下划线,数字(0 到 9)。
  • 不可以:Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。
  • 区分大小写

全局变量

  • 默认直接声明就是全局
  • 删除用 a=nil

获取变量类型

print(type("Hello world"))      --> string
print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean
print(type(nil))                --> nil
print(type(type(X)))            --> string

boolean(布尔)

  • false: nil 和 false
  • true: 其他的都为 true

string(字符串)

-- 与 js 相同,尝试转化为 number 计算
print("2" + 6)
-- 连接字符串
print("hello" .. "world")

table(表)

-- 表(table)
local tbl2 = {"apple", "pear", "orange", "grape"}
-- 遍历表
for k, v in ipairs(tbl2) do
    print(k, v)
end

function(函数)

-- define a function
function sum(a, b)
    return a + b
end

-- call a sum function
print(sum(1, 2))

thread(线程)- 略

userdata(自定义类型)-略


lua 变量

  • 全局变量:直接声明就是全局的
  • 局部变量:加 local 关键词
  • 表中的域:

赋值

a, b, c = 0, 1
print(a,b,c)             --> 0   1   nil

循环

-- 起始值,终止值,步长
for i=10,1,-1 do
    print(i)
end

-- 针对 table 
local days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}  
for i,v in ipairs(days) do  
    print(i, v) 
end 

流程 if .. else

--[ 0 为 true ]
if(0)
then
    print("0 为 true")
end

函数

  • 普通函数
  • 能返回多值的函数
  • 动态 arguments
-- 函数:sum
-- 功能:计算数组中的所有元素的和
-- 参数:n1,n2
function sum(n1, n2)
    return n1 + n2
end


-- 函数,获取多值
function calc(n1,n2)
    local s1 = n1+n2
    local s2 = n1-n2
    local s3 = n1 * n2
    local s4 = n1 / n2
    return s1,s2,s3,s4
end
print(calc(1,2))

-- 动态 arguments
function average(...)
   local result = 0
   local arg={...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   print("总共传入 " .. select("#",...) .. " 个数")
   return result/select("#",...)
end

print("平均值为",average(10,5,3,4,5,6))

参考