Lua学习基础入门

Posted 恒哥~Bingo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua学习基础入门相关的知识,希望对你有一定的参考价值。

Lua简介

Lua 是由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于1993年开发的一种轻量、小巧的脚本语言,用标准 C 语言编写,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua的特性

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

官网:http://www.lua.org

Lua安装

Windows安装

下载地址:https://github.com/rjpcomputing/luaforwindows/releases

Linux安装

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make linux test
make install

安装IDE

Elicpse插件:https://www.eclipse.org/ldt/

Idea插件:在plugins菜单中搜索 EmmyLua,安装重启

Lua语法

Helloworld

print("Hello Lua")

注释

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

数据类型

Lua的数据类型有:

  • number 只有double类型,占4字节
  • string 单引号和双引号括起来
  • boolean 包含true、false,nil也算false
  • 空 nil

变量

包含全局变量和局部变量

-- 全局变量
num = 10;
print("num="..num)
-- 局部变量
local name = false;
-- 使用type获得数据类型
local myType = type(name)
print("type="..myType)

IF-ELSE

-- if-else
local age = 14;
local gender = "male";
if age >= 18 and gender == "female" then
    print("女大十八变");
elseif age >= 18 and gender == "male" then
    print("男大十八变");
else
    print("小毛孩子");
end

WHILE循环

-- while循环
local i = 0
while i <= 100 do
    print("i = "..i);
    i = i + 1;
end

FOR循环

for 变量初始化,结束值,递增值

-- for循环
for i = 0,100,1 do
    print("i = "..i);
end

函数

基本函数

-- 定义函数
function sum(n1,n2)
    return n1 + n2;
end
local result = sum(22,33);
print(result);

Lua的函数可以返回多个结果

-- 返回多个结果
function getNumbers()
    return 11,22,33;
end
local n1,n2,n3 = getNumbers();
print(n1,n2,n3);

闭包机制,函数也可以看做值

function func()
    local num = 0;
    -- 匿名函数
    return function()
        num = num + 2;
        return num;
    end
end
local foo = func();
print(foo())
print(foo())
print(foo())

数组

Lua的数组可以包含多种数据类型,甚至函数

下标是从1开始的

-- 数组
arr = "haha", 100, "hehe",function() print("hoho") return 99 end
print(arr[1],arr[2],arr[3],arr[4]())

使用for-in可以遍历下标和值

for k,v in pairs(arr) do
    print(k,v)
end

面向对象

Lua支持面向对象的语法

-- 定义对象属性
local person = id = 1,name = "张三",age = 20;
print(person.id,person.name,person.age);
-- 定义对象方法
function person.sayHi()
    print("我是"..person.name.."年龄"..person.age);
end
person.sayHi();

以上是关于Lua学习基础入门的主要内容,如果未能解决你的问题,请参考以下文章

Lua学习基础入门

Lua学习基础入门

自学成菜-流水账学习法lua入门

Lua特性和一些基础语法总结(Lua入门到精通一)

lua基础知识套装

lua 如何最快速度入门