Lua

124 阅读4分钟
  • lua区分大小写
  • 在Lua中有8中基础类型:nil(空值),Boolean(布尔值),Number(数值),String(字符串),Table(关系表达式),Function(函数类型),Userdate(自定义类型),Thread(线程类型)。

number

  • number方法
local num = 1.25
print(math.ceil(num))--向上取整
print(math.floor(num))--向下取整
print(math.random())--随机数
print(tonumber("123"))--转换成数字

string

  • \abell(响铃)
    \bback space(后退)
    \fform feed(换页)
    \nNewline(换行)
    \rcarriage return(回车)
    \tHorizontal tab(水平tab)
    \vVertical tab(垂直tab)
    \Backslash(反斜杠)
    \”Double quote(双引号)
    \’Single quote(单引号)
    [Left square bracker(左中括号)
    ]Right square bracket(右中括号)
    • string方法
    --string
    local str = "你好"
    str = string.gsub(str, "你", "他")--替换
    ​
    str = string.sub(str, 1, 3)--截取[1, 3]索引的字符,对于中文需要3个位置才能截取到一个。空格也算一个字符
    str = "123 jn jjj"
    print(string.sub(str, 1, 5))-->123 jprint(#str)-->10
    local str1 = "你好游戏\n"--中文占3个字符,转义字符占一个字符
    print(#str1)-->13
    

table

  • table方法:
table.insert(table_1, 2, 5)--表的插入
--table
local table_1 = {1, 2, 3}
table.insert(table_1, 2, 5)--表的插入
for i, v in ipairs(table_1) do
    print(v)
end
print("-----------------")
​
local table1 = {{1, 2}, {3, 4}, {5, 6}}
print(#table1)--打印长度print("-----------------")
local table2 = {
    1,
    nil,
    [3] = "大聪明",
    ["愚公"] = {0, 120, 50},
    jack = {1, 2, 3},
    "nihao",
}
print(#table2)
print(table2[3])--先给没有索引的排序,有指明索引的需要加""
print(table2["jack"][2])
​
equipList_zuoqi = {
    [1]       = {"汗血宝马", "升阶丹", 1,  1300000,   30},
    [2]       = {"绝影",      "升阶丹", 2,  2100000,   35},
    [3]       = {"疾风",      "升阶丹", 5,  3400000,   40},
    [4]       = {"梦魇兽",  "升阶丹", 10, 5500000,   45},
    [5]       = {"雪域天狼", "升阶丹", 20, 8900000,   50},
    [6]       = {"独角兽",  "升阶丹", 50, 14400000,  60},
    [7]       = {"裂天魔狮", "升阶丹", 100,    23300000,  70},
    [8]       = {"吼天兽",  "升阶丹", 200,    37700000,  80},
    [9]       = {"地煞瞳兽",    "升阶丹", 500,    61000000,  90},
    [10]   = {"火麒麟",  "升阶丹", 1000,   98700000,  100},
    [11]   = {"不死鸟",  "升阶丹", 2000,   159700000, 110},
    [12]   = {"龙鹰",      "升阶丹", 5000,   300000000, 130},
}
print(equipList_zuoqi[5][3])

funcion

  • function方法:

  • function fun1(a, b)--形参
        return a + b
    end
    ​
    x = fun1(1, 2)--实参
    print(x)
    ​
    print("----------------")
    

变量定义

  • 变量总是全局变量,除非,你在前面加上“local”。即使在方法中。
  • 变量名,它是大小写敏感的,也就是说,A和a是两个不同变量。
  • 没有初始化的变量,默认是nil。

算术操作符

  • 常规的算术操作符包括:“+”,“-”,“*”,“/”,“%(取余)”,“^(指数)”

关系操作符

  • 常规的关系操作符包括:< , > , <= , >= , ~= , == 。这里所有的操作符返回的结果都是true或者false。

  • 同类型才能比较,否则为false。

  • 如果两个比较的值为对象(如:function,table),只有它们引用的是同一个对象时结果才会是true。

    --比如:不能直接比较对象
    table1 = {1, 2, 3}
    table2 = {1, 2, 3}
    ​
    print(table1 == table2) -->false
    

逻辑操作符

  • 在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true。

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

  • print(8 and 4)-->4
    print(8 or 4)-->8
    

控制结构

Lua中控制结构包括以下几种:

  • 条件控制:if 条件 then ... elseif 条件 then ... else ... End

    -- 条件为true,则执行then部分,false执行else部分。

  • While循环:while 条件 do... end

    -- 条件为false,循环结束,条件为true,执行循环体,并重复这一过程。

    -- 或者遇到break,跳出循环。

  • Repeat循环:repeat ... until 条件

    -- 一直执行repeat的循环体,直到条件为真

  • 数值型For循环:for 变量 = 初值,终点值,步进 do ... End

    -- 其中步进是可选的,如果不指定,默认为1

  • 泛型for循环:通过一个迭代器函数来遍历所有的值:

for k,v in pairs(chs) do ...end

--遍历table chs的的所有值,包括key,value。

  • 标准库提供了几种迭代器,包括用于迭代文件中每行的(io.lines),迭代table元素的(pairs),迭代table组元素的(ipairs),迭代字符串中单词的(string.gmatch)等。