[Lua] 脚本语言从入门到入土 (1)

您所在的位置:网站首页 易语言lua [Lua] 脚本语言从入门到入土 (1)

[Lua] 脚本语言从入门到入土 (1)

2023-03-13 14:58| 来源: 网络整理| 查看: 265

注:本教程将依据书籍 Lua程序设计第四版 进行介绍,共有18个章节。Lua的安装可以参考其他教程,如有不对的地方还请大佬们指出。

1. Lua语言介绍

Lua 是一个小巧的脚本语言,其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua作为一种嵌入式脚本,常用在游戏开发和游戏应用脚本

2. Lua基础 2.1 变量类型

Lua中共有3种数据类型:

(1): 全局变量:正常定义的变量,不管是否在函数中都为全局变量

(2): 局部变量:使用local修饰,只在当前作用域起效(多用于函数块中)

(3): 表字段:指使用table定义的字段,table的使用会在后文指出

2.2 数据类型

(1): nil  表示没有任何一种有效值(如print没有赋值的变量)

(2): boolean

(3): number  双精度浮点数

(4): string (将在后面做详细介绍)

(5): function

(6): userdata  由C++语言库创建的类型,将C中类型储存到Lua调用

(7): thread  用于执行协同的栈(暂不考虑)

(8): table  相当于字典,索引可以是任何数据类型(将在后面详细介绍)

2.3 运算符

(1): and  如果前者为真,则返回后者。如果前者不为真,则返回前者

如:a and b  如果a为真,则返回b,否则返回a

(2): or  如果前者为真,则返回前者。如果前者不为真,则返回后者

如:a or b  如果a为真,则返回a,否则返回b

(3): not  如果输出值为真,则返回false,否则返回true

注:在Lua中false和nil为假(false),其他值都为真(true)

3. Lua数学库

Lua提供标准数学库math,其中包括:

(1): 三角函数(cos,sin,tan)等

(2): 取整函数 

     -- floor:向下取整,如 math.floor(19.1) = 19

     -- ceil:向上取整,如 math.floor(19.1) = 20

     -- modf:向0取整,正数向下取整,负数向上取整

(3): 运算函数  min,max 等

(4): 表示范围  Lua提供表示范围 mininteger 和 maxinteger, 分别代表 (2的63次方-1) 与 (-2的63次方+1), 如果数超过这个数则其会等于最大/最小值。

4. Lua字符串

(1): Lua中的字符是不可变值,但是可以通过修改/创建新字符来完成修改,如:

a = "hello"

b = string.gsub("lo", "p")        - gsub意为替换字符

print(b)             --> help

(2): 获取字符串长度:#a      - a为字符串名字, 如:

a = "aabbcc"

print(#a)      --> 6 

(3): 连接字符串: ..    , 如:

a = "aab"  b = "bcc"

print(a..b)      --> aabbcc

(4): string单双引号使用:初始定义都可使用,但如果内容中存在 ” “ 或 ‘ ’,则需要用另一种括号以避免转义错误,如:

a = "a'b'c"    print(a)      --> a'b'c

b = "a"b"c"   print(b)      --> BUG

(5): 转义字符:

\b: 退格

\t: 水平制表符

\n: 换行

(6): 数值转换:可以使用tonumber将string转化为number,同时可以定义进制,如:

a = "100101"   print(tonumber(a,2))      --> 32

a = "100101"   print(tobumber(a))      --> 100101

b = "987"   print(tonumber(b,8))      -->nil    (因为不能被成功转化成该进制,所以返回nil)

(7): 字符串比较:Lua中的字符串比较将通过第一位在字典中的顺序进行比较,其中:

数字0-9 < 大写字母A-Z < 小写字母a-z, 如:

a = "1000"  b = "999" , 则 a < b

注:不能比较字符串和数值,否则会抛出异常

(8): 字符串标准库

- len(s): 返回字符串长度(与#a作用相同)

- rep(s,n): 将字符串s重复n次

- reverse(s): 将字符串s倒转

- sub(s,i,j): 提取字符串s的第i到第j个数

- lower(s), upper(s): 获得大/小写的字符串s

- char(s): 将输入的数字转换为ASCII码 (超过最大则会报错), 如:

a = "69"     print(a:char())      --> E

- byte(s,i): 将字符串s的第i个字符转化为ASCII码,如:

a = "abc"   print(a:byte(2))      --> 98

- find(s,a): 返回字符串s中找到a的起始与结束的位置,若没有找到则返回nil,如:

a = "abc"    print(a:find("ab"))      -->  1  2

a = "abc"    print(a:find("d"))      -->  nil

- gsub(s,a,b): 将字符串s中的a内容替换成b,同时返回修改生效的次数,如:

a = "abc"    print(a:gsub("a","d"))      -->  "dbc"   1

a = "abc"    print(a:gsub("d","e"))      -->  "abc"   0

下一章开始会更新table、函数、输入输出等模块的内容,希望大家可以多多练习,早日掌握。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3