• lua笔记


    来源 https://www.cnblogs.com/AaronBlogs/p/7111056.html

    string(字符串)字符串由一对双引号或单引号来表示。

    string1 = "this is string1"
    string2 = 'this is string2'
    

    也可以用 2 个方括号 "[ [ ] ]" 来表示"一块"字符串。

    _str2=[[my name is jack!]]
    

    print(_str2)

    • 在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:
        print("1"+5)                 --6
        ("1"+"6")              --7
        print("3+7")              -- "3+7"
    
    • 关于字符串拼接,使用.. 对字符串进行拼接
        value=11
        print("value="..value)    --value=11
    
    • 使用 # (井号)来计算字符串的长度,放在字符串前面,如下实例:
        mail = "ukraine_lee@163.com"
        print(#mail)
        --19
    

    日期格式化:

    day=1
    month=5
    year=2017
    date=string.format("日期:%02d/%02d/%03d",day,month,year)
    print(date)
    

    Table(表)

    在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是大括号{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表:

    -- 创建一个空的 table
    local tbl1 = {}  
    --python字典初始化 dict = {'a': 1, 'b': 2, 'b': '3'}  列表(List)初始化['physics', 'chemistry', 1997, 2000]  
    --Python的数组分三种类型:
    --(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。
    --定义方式:arr = [元素]
    --(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。
    --定义方式:arr = (元素)
    --(3) Dictionary 词典类型, 即是Hash数组。
    --定义方式:arr = {元素k:v}
    
    -- 直接初始表
    local tbl2 = {"apple", "pear", "orange", "grape"}  --苹果,梨,橙子,葡萄
    local tbl2={X=3,y=4} --指定键值初始化  X,Y是键,值是3,4
    

    不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。

    local tbl = {"apple", "pear", "orange", "grape"}
    for key, val in pairs(tbl) do
        print("Key", key)
    end
    -- 1 2 3 4
    

    table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。
    表函数的定义和使用:

    tab={x=2,y=3}
    function tab:setValue(m_x,m_y)  --注意定义的时候使用了:冒号
    tab.x=m_x
    tab.y=m_y
    end
    tab:setValue(5,6)    --注意,在调用的时候也必须和定义时一致使用冒号。
    print(tab.x,tab.y)
    
    • Table连接:
    m_table={"a","b","c"}
    temp=table.concat(m_table) --注意table是关键字
    print(temp)
    
    • 插入和移除:

    插入:

    m_table={"a","b","c"}
    table.insert(m_table,"d")
    print(m_table[4])
    

    移除:

    table.remove(m_table) --移除方法,会移除最后一个元素
    for k,v in pairs(m_table) do
    print(k,v)
    end
    

    function (函数)

    函数还可以像下面这样存在一个变量里:

    function function_name(n_value)
        return n_value+1
    end
    print(function_name(7))
    --这里同python的使用很像
    func_self=function_name  
    print(func_self(5))
    

    while 循环

    Lua 编程语言中 while 循环语法:(注意不同于C# 语句没有大括号)
    语法:

    while(condition)
    do
       statements
    end
    

    实例:

    a=1
    while( a < 5 )
    do
       print("a 的值为:", a)
       a = a+1
    end
    

    for 循环

    数值for循环

    Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。
    Lua 编程语言中 for语句有两大类:(注意与C#的for 循环有较明显区别)
    第一种:数值for循环

    for var=exp1,exp2,exp3 do
    <执行体>
    end
    

    var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次"执行体"。exp3是可选的,如果不指定,默认为1。

    实例:

    for i=1,5 do
    print(i)
    end
    

    泛型for循环

    泛型for循环通过一个迭代器函数来遍历所有值
    在lua中pairsipairs两个迭代器的用法相近,但有一点是不一样的:

    pairs可以遍历表中所有的key,包含索引,和自定义类型key
    ipairs 仅可以遍历出具备索引的值

    _table2={"Suanday","Monday"}
    _table2["ukey"]="uvalue" --键值都是字符串
    intkey=8
    _table2[intkey]="uvalue" --键是number 值是字符串
    for k,v in ipairs(_table2) do
    print(k,v)
    end
    -- 输出结果是 (table2 中仅具备索引的2个值被输出了)
    1 Suanday
    2 Monday
    
    for k,v in pairs(_table2) do
    print(k,v)
    end
    
    -- 输出结果是(所有的键值均被输出)
    1   Suanday
    2  Monday
    ukey  uvalue
    8   uvalue
    

    运算符

    关系运算符

    ~= 不等于,检测两个值是否相等,相等返回 false,否则返回 true

    逻辑运算符

    not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。
    设定 A 的值为 true,B 的值为 false:
    not(A and B) 为 true。

    其他运算符

    .. 连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
    # 一元运算符,返回字符串或表的长度。 #"Hello" 返回 5

  • 相关阅读:
    CF704D Captain America 上下界网络流
    CF241E Flights 差分约束
    CF1063F String Journey DP、SAM、线段树
    AGC028E High Elements 贪心、DP、线段树
    Solution -「CF 623E」Transforming Sequence
    Solution -「十二省联考2019」春节十二响
    最大团-最小度不等式
    「Lagrange 插值」学习笔记
    Solution -「NOI.AC 省选膜你赛」union
    Solution -「NOI.AC 省选膜你赛」T2
  • 原文地址:https://www.cnblogs.com/zh672903/p/11031731.html
Copyright © 2020-2023  润新知