美文网首页
Lua 语言学习教程

Lua 语言学习教程

作者: Mr_White | 来源:发表于2019-11-10 13:47 被阅读0次

Lua 基本语法

print("Hello World!")
-- 单行注释

--[[
多行注释
--]]

---[[
print('取消多行注释')
--]]

--[ 定义变量 --]
  • 多行注释推荐使用 --[=[注释内容]=],这样可以避免遇到table[table[idx]]时就将多行注释结束了。
  • 最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
  • 在默认情况下,变量总是认为是全局的。

Lua 数据类型

  • Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。

nil(空)


  • nil = 空。
  • nil 作比较时应该加上双引号 type(X)=="nil"

boolean(布尔)


  • Lua 把 false 和 nil 看作是"假",其他的都为"真"。

number(数字)


  • Lua 默认只有一种 number 类型 -- double(双精度)类型。

string(字符串)


  • 字符串由一对双引号或单引号来表示。
  • 也可以用 2 个方括号 "[[]]" 来表示"一块"字符串。
html = [[
菜鸟
学习
]]
print(html)
  • 在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字。
    -字符串连接使用的是 ..
> print("a" .. 'b')
ab
  • 使用 # 来计算字符串的长度,放在字符串前面.
> len = "www.runoob.com"
> print(#len)
14

table(表)


  • 在 Lua 里表的默认初始索引一般以 1 开始。

function(函数)


  • function 可以以匿名函数(anonymous function)的方式通过参数传递。

thread(线程)


  • 线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

userdata(自定义类型)


  • 可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。

Lua 变量

  • Lua 变量有三种类型:全局变量、局部变量、表中的域。
  • 用 local 显式声明为局部变量,局部变量的作用域为从声明位置开始到所在语句块结束。

赋值语句


  • 赋值语句右边的值会依次赋给左边的变量,遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,可以这样进行交换变量的值。
x, y = y, x                     -- swap 'x' for 'y'
  • 应该尽可能的使用局部变量,有两个好处:
  1. 避免命名冲突;
  2. 访问局部变量的速度比全局变量更快。

索引


  • 对 table 的索引使用方括号 []。Lua 也提供了 . 操作。
t[i]
t.i                 -- 当索引为字符串类型时的一种简化写法

Lua 循环


  • while循环

while(condition)
do
   statements
end
  • for 循环

1. 数值for循环

for var=exp1,exp2,exp3 do  
    <执行体>  
end  
-- var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。

2. 泛型for循环

--打印数组a的所有值  
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 
-- i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。

pairs 能迭代所有键值对
ipairs 可以想象成 int+pairs,只会迭代键为数字的键值对。

  • repeat...until 循环

repeat
   statements
until( condition )
-- 在条件进行判断前循环体都会执行一次
  • 循环嵌套

repeat
   statements
   repeat
      statements
   until( condition )
until( condition )

还可以使用不同的循环类型来嵌套。

  • break 语句

如果你使用循环嵌套,break语句将停止最内层循环的执行,并开始执行的外层的循环语句。

相关文章

网友评论

      本文标题:Lua 语言学习教程

      本文链接:https://www.haomeiwen.com/subject/anqabctx.html