美文网首页
【Lua】(1)基础语法

【Lua】(1)基础语法

作者: littlefogcat | 来源:发表于2021-01-26 03:43 被阅读0次

一、变量

Lua有8个基本类型:无效值nil、布尔值boolean、数number、字符串string、函数function、自定义类型userdata、线程thread、表table

无需声明一个变量就可使用,不过在赋值之前,变量的值为nil,表示不存在。

Lua为动态类型语言,变量的类型可以动态改变。

print(a) -- nil
print(type(a)) -- nil
a= 1
print(a) -- 1
print(type(a)) -- number
a= "abc" 
print(a) -- abc
print(type(a)) -- string

一些要注意的点

number
所有数字都是双精度浮点数。

nil
虽然nil的类型是nil,但是type(nil)返回的是字符串"nil"

string
拼接字符串使用..而不是加号。1+"1"会得到2.0

table
table是key-value形式的表,可以嵌套。
初始化格式tb = {[key1] = value1, [key2] = value2, ...},如tb = {["a"] = "hello", ["b"] = {1, 2, 3}}
使用tb[key]来取对应的value值,表中没有的项会返回nil;使用tb[key] = value的形式来更新表。

数组
Lua中数组的本质是一个table。
使用tb = {"a", "b", "c"}的形式初始化一个数组,等同于tb = {[1] = "a", [2] = "b", [3] = "c"}
要注意数组的序号是从1开始的,并且数组中元素的数据类型不需要一致。

变量作用域
变量默认是全局的,一处定义到处使用。
使用local关键字修饰变量,可以将其变为局部变量。

二、循环

2.1 for

循环有两种方式:数值循环迭代循环

2.1.1 数值循环
数值循环格式:

for i = 起始值, 结束值, 间隔值 do
    -- statements
end

其中,间隔值为1的时候可以省略。

2.1.2 迭代循环
遍历表tb

tb = {["a"] = "hello", ["b"] = 2}
for k,v in pairs(tb) do
    print(k, v)
end

其中,pairs为内置函数,提供了table的迭代器。

2.2 while

while格式:

while(condition)
do
   -- statements
end

2.3 repeat-until

repeat-until格式:

repeat
   -- statements
until( condition )

三、条件语句

格式:

if(cond1) then
    -- statements
elseif(cond2) then
    -- statements
elseif(cond3) then
    -- statements
...
else
    -- statements
end

四、函数

函数的形式

function类型的变量有两种定义方式,二者等价。调用的时候记得加括号,不然就是一个普通的变量。

function foo()
    print("hello")
end
foo() -- hello

bar = function()
    print("hello")
end
bar() -- hello

有几点需要注意:

  1. 函数可以嵌套;
  2. 函数默认是全局的,即使是嵌套在其他函数中;如果要定义局部函数,使用local关键字。

例:

function a()
    print("a")
    function b()
        print("b")
    end
    c = function()
        print("c")
    end
    local function d()
        print("d")
    end
end

a() -- a
b() -- b
c() -- c
d() -- 报错,局部函数外部不能访问

返回值

Lua函数可以返回多个结果

function foo()
    return "hello", "world"
end

可变长参数

使用...表示可变长的参数。
使用pairs{...}来获取变长参数的迭代器。
使用select("#", ...)来获取传入的可变长参数个数。

f = function(...) -- 可变参数函数
    print("一共有"..select("#", ...).."个参数")
    for k, v in pairs{...} do
        print(k..": "..v)
    end
end
f("a", "b", "c")

输出

一共有3个参数
1: a
2: b
3: c

五、运算符

数学运算:
+、-、*、/:加减乘除
%:求余
^:求幂

关系运算:
==:等于
~=:不等于
>、<、>=、<=:大于、小于、大于等于、小于等于

逻辑运算:
and:与
or:或
not:否

其他:
..:字符串连接
#:返回字符串或表的长度

相关文章

  • 【Lua】(1)基础语法

    一、变量 Lua有8个基本类型:无效值nil、布尔值boolean、数number、字符串string、函数fun...

  • 【IOS开发高级系列】Lua与OC交互专题

    1 Lua语法 Lua教程 http://www.yiibai.com/lua/lua_environment.h...

  • Lua

    让Xcode 支持 Lua 语法高亮 1.让Xcode支援Lua语法高亮(Syntax Highlighting)...

  • lua基础语法

    瞄准天上的星星,或许你永远也射不到,但却比你瞄准树梢射得高远。 lua有两种编程方式,我们分别介绍一下,但在以后的...

  • lua语法基础

    1、变量 2、打印 3、条件判断 4、注释

  • Lua学习路线

    1、lua语法:菜鸟教程 http://www.runoob.com/lua/lua-basic-syntax.h...

  • 第二章 类型与值

    1. Lua是一种动态类型的语言。在语言中没有类型定义的语法,每个值都携带了它自身的类型信息。在Lua中有8中基础...

  • lua 讲义 --2014.09.13

    Lua 本文是以读者了解Lua基本语法为基础展开的。 Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基...

  • LUA_API lua_absindex

    本系列不会讲 Lua 的基础语法,由于Lua的轻便简洁,读者自行搜索了解,很快就可以入门。本节开始,将直接进入 L...

  • 文件实时同步神器lsyncd配置详解一

      Lsyncd的配置文件是有效的lua语法,当然也支持lua编程,当然那是比较高级的用法了后面在简绍。先介绍基础...

网友评论

      本文标题:【Lua】(1)基础语法

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