当前位置: 首页 > 编程笔记 >

Lua脚本语言入门笔记

尉迟俊能
2023-03-14
本文向大家介绍Lua脚本语言入门笔记,包括了Lua脚本语言入门笔记的使用技巧和注意事项,需要的朋友参考一下

什么是Lua

  Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的GIT项目,提供在特定平台上的即时编译功能。

  Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。 Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。 一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

Lua里的注释

单行注释

使用两个减号表示注释的开始,一直延续到行末位置。相当于C语言中的"//"。


--这里是一行注释

print("Hello Lanou")

多行注释

使用"--[["表示注释开始,使用"]]"表示注释结束。这种注释相当于C语言中的"/*"和"*/"。


--[[这里是第一行注释

这里是第二行注释]]

pring("Hello Lanou")

Lua里的变量

在默认情况下,Lua里认为所有的变量都是全局变量。假如需要定义局部变量,则在声明变量时需要使用local说明。

并且在赋值的时候,允许同时给多个变量进行赋值。


-- i是一个局部变量

local i = 1

 

-- name是一个全局变量

name = "Lewis"

 

-- age,height都是局部变量

local age,height = 34,183.5

 

-- gender,company都是全局变量

gender,company = "男","蓝鸥"

Lua里的运算符

算数运算符


-- +(加法)

print(1 + 2)

 

-- -(减法)

print(1 - 2)

 

-- *(乘法)

print(1 * 2)

 

-- /(除法)

print(1 / 2)

 

-- ^(乘方)

print(1 ^ 2)

比较运算符


-- <(小于)

print(1 < 2)

 

-- >(大于)

print(1 > 2)

 

-- <=(小于等于)

print(1 <= 2)

 

-- >=(大于等于)

print(1 / 2)

 

-- ==(等于等于)

print(1 == 2)

 

-- ~=(不等于)

print(1 ~= 2)

逻辑运算符

在使用逻辑运算符时与C语言差别很大。

在Lua语言里,只有false和nil才为false,其他任何数据都是true,0也是true!!!

and 和 or 的运算结果不是true和false,而是和他的两个操作数相关。

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

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


-- and(与)

print(1 and 2)

 

-- or(或)

print(1 or 2)

 

-- not(非)

print(1 not 2)

通过Lua里的这种特性,可以模拟C语言中的 ?:运算符

例如:C语言中的 x=a?b : c,在Lua中,可以写成 x = a and b or c。

Lua里的数据类型

关键字 描述
nil 空值,所有没有使用过的变量都是nil;nil既是值,又是数据类型
boolean 布尔类型,只有两个有效的值:true和false
number 数值类型,在Lua里,相当于C语言里的double
string 字符串,如果愿意的话,字符串是可以包含"\0"字符的
table 关系类型,这个类型的功能比较强大
function 函数类型,可以由函数类型来声明变量
userdata 这个类型专门与Lua的宿主打交道。宿主通常是由c语言和c++++语言开发的,在这种情况下,userdata可以是宿主的任何类型,常用的是结构体和指针类型
thread 线程类型,在Lua里没有真正的线程。

Lua里的代码块

在C语言中代码块是有"{"和"}"括起来的,在Lua中,使用do和end关键字括起来的。


do

print("Hello")

end

Lua里的关系类型

关系类型,是一个非常强大的类型。这个类型类似于C++语言里的映射结构,类似于PHP语言里的array对象,类似于OC里的NSDictionary对象。

在Lua里的关系类型(Table)定义很简单,它主要特征是使用"{"和"}"来括起来一系列的元素。


--声明一个关系类型的全局变量table

table = {}

 

--赋值关系变量table索引为0时的值是34

table[0] = 34

 

--同时也可以写成 table.name = "Lewis"

table["name"] = "Lewis"

table.gender = "男"

 

--同样也可以将索引为"son"的对象写成另外一个表格

table["son"] = {name = "DD",gender = "男"}

 

--访问对象时就可以使用

print(table.son.name)

同样也可以如下声明


-- 声明关系变量table

table = {

    10,--相当于[1] = 10

    [100] = 40,

 

 

    lewis = { -- 同样也可以写成 ["lewis"] =

        age = 34, -- 同样可以写成 ["age"] = 34

        gender = "male",

    },

 

    20, --相当于[2] = 20

}

 

print(table[2])

Lua里的函数

在Lua中,函数的定义非常简单。不过要注意的一点就是,return语句一定要写在end之前。假如我们非要在函数中加一个return语句,那就应该写成。


do

--return语句一定要在一个代码块结束前

return

end

函数举例


-- 声明函数类型变量sum

function sum( v1,v2 )

    -- 函数体

    return v1 + v2

end

 

-- 同样函数变量也可以如下声明

mul = function (v1,v2 )

    -- 函数体

    return v1 * v2

end

 

--调用第一个函数sum

print(sum(2,3))

--调用第二个函数mul

print(mul(3,4))

Lua里的类

前边曾经说过,表类型可以拥有任意类型的值,包括函数!

因此,我们就可以创建一个具有函数变量的表。


lewis = {

    age = 34,

    work = function (self,message)

        -- 函数体

        self.age = self.age + 1;

        print(self.age .. message)

    end

}

 

print(lewis.age)

lewis.work(lewis,"上班")

 

--也可以如下调用方法

lewis:work("上班")

结束

就像C语言一样,Lua里提供了很多的标准函数库来增强语言的功能。使用这些函数,可以很方便的操作各种数据类型。

可以参考《Programming in Lua》这本书。

 类似资料:
  • 本文向大家介绍lua脚本语言快速入门教程,包括了lua脚本语言快速入门教程的使用技巧和注意事项,需要的朋友参考一下 lua作为很好的嵌入式语言可以非常好的作为c/c++补充,在游戏行业是得到了广泛的应用 一直在思考,能不能把他引入商业领域的规则语言呢?将业务规则经常变的部分提炼出来, 而无须重新编译程序。作为规则引擎的角色进行使用 使用前当然得安装一下去http://www.lua.org/下载一

  • 本文向大家介绍Lua脚本语言概述,包括了Lua脚本语言概述的使用技巧和注意事项,需要的朋友参考一下 Lua是什么 Lua是一中嵌入式的脚本语言。 Lua语言可以独立进行编程,但这不是其主要的使用方式。Lua虽然有动态、灵活的语法提供强大的功能,但并不像 Java、Python 等一样有一个完善的库(但仍存在一定数量的第三方库),这不是缺陷,而是和其定位有关。 Lua最典型的用法,是作为一个库,嵌入

  • 本文向大家介绍Lua教程(一):Lua脚本语言介绍,包括了Lua教程(一):Lua脚本语言介绍的使用技巧和注意事项,需要的朋友参考一下 Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。 它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的

  • 问题内容: 当我看到Lua时,我唯一读过的就是“伟大的嵌入”,“快速”,“轻巧”,而且比其他任何东西都更常见:“魔兽世界”或简称“ WoW”。 为什么仅限于将整个内容嵌入到另一个应用程序中?为什么不像使用Python或Perl那样编写通用脚本? Lua在速度和内存使用(最快的脚本语言afaik)等方面似乎做得很好,为什么为什么我从来没有看到Lua被用作自动化任务的“桌面脚本语言”?例如: 重命名一

  • 本文向大家介绍Lua入门学习笔记,包括了Lua入门学习笔记的使用技巧和注意事项,需要的朋友参考一下 最近在使用Cocos2d-x + Lua来开发游戏。 游戏的主要逻辑将在Lua里写,之前没有接触过Lua,以下是我总结的入门笔记。 运算符 逻辑运算符 与:and 或:or 非:not 逻辑判断只有在false和nil时为假,其余均为真。 or和and会返回第一个断路的值。 Lua中没有C语言的三元

  • Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 所组成并于 1993 年开发。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩