LUA脚本语言

  3.2 游戏引擎技术
  • 2021.3.8 ,先看一下runoob简易入门教程
    https://www.runoob.com/lua/lua-tutorial.html
  • 官网原文档(目前最新是5.4版本),有空再看
    http://www.lua.org/manual/5.4/

Lua简介

  • Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
  • Lua特性:
    轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
    可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
    其它特性:支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

Lua语法

基础语法

  • 经典第一题,注意没有分号:print(“Hello World!”)
  • 关键词
QQ截图20210310210622 - LUA脚本语言
  • 创建变量默认全局变量,删除创建变量只需要,变量名=nil即可。
  • Lua 不允许使用特殊字符如 @$, 和 % 来定义标示符
  • 变量区分大小写

数据类型

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

&& = and 
|| = or
! = not
  • lua中默认只有一种number数字类型,几乎所有的数字都属于number类型。
  • 字符串有两种方式:
1、字符串形式
string = "xxxxx"

string = [[ xxxx
xxxxx
xxxxx
]]

2、对于字符串进行数学运算时会尝试把字符串类型转换为数字类型
> print("2" + 6)
8.0
> print("2" + "6")
8.0
> print("2 + 6")
2 + 6
> print("-2e2" * "6")
-1200.0

3、使用 # 来计算字符串的长度
> len = "www.runoob.com"
> print(#len)
14
> print(#"www.runoob.com")
14
  • 有关表(table)的操作
1、创建表
local tbl2 = {"apple", "pear", "orange", "grape"}

2、table是关联数组(下标从1开始),table长度可随时根据增加内容变化,索引建立:
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
  • function函数,作为第一类值使用
function factorial1(n)
    if n == 0 then
        return 1
    else
        return n * factorial1(n - 1)
    end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
  • 线程,协程的概念:https://blog.csdn.net/u010487568/article/details/56841031/
  • thread线程:在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

Lua变量

  • 变量申明类型:全局变量、局部变量(local)、表中的域。局部变量的作用域为从声明位置开始到所在语句块结束。

LEAVE A COMMENT