• lua keynote


    lua keynote

    1、两个减号是单行注释:

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

    ---[[ // 三个'-'开启的是一个行注释
    --]]

    1.1、两条语句可以在同一行,并表不需要分号分隔。

    a=1 b=a*2

    1.2、dofile可以在当前环境中执行一段文件代码。

    2、标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。

      最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。

      Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。

    3、关键字

      

    4、在默认情况下,变量总是认为是全局的。

      全局变量不需要声明,给一个变量赋值后即创建了这个全局变量。

      访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。

    > print(b)
    nil
    > b=10
    > print(b)
    10
    > 

      如果你想删除一个全局变量,只需要将变量赋值为nil。

    b = nil
    print(b)      --> nil

    5、Lua数据类型

      

      我们可以使用type函数测试给定变量或者值的类型:

    print(type("Hello world"))      --> string
    print(type(10.4*3))             --> number
    print(type(print))              --> function
    print(type(type))               --> function
    print(type(true))               --> boolean
    print(type(nil))                --> nil
    print(type(type(X)))            --> string

    6、boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是"假",其他的都为"真":

      Lua 默认只有一种 number 类型 -- double(双精度)类型。

    7、字符串操作。

      字符串由一对双引号或单引号来表示。也可以用 2 个方括号 "[[]]" 来表示"一块"字符串,[[]]不会解释转义字符。

    string1 = "this is string1"
    string2 = 'this is string2'
    
    html = [[
    <html>
    <head></head>
    <body>
        <a href="http://www.runoob.com/">菜鸟教程</a>
    </body>
    </html>
    ]]
    print(html)

      字符串连接使用的是 .. 

    > print("a" .. 'b')
    ab
    > print(157 .. 428)
    157428
    > 

      使用 # 来计算字符串的长度,放在字符串前面

    > len = "www.runoob.com"
    > print(#len)
    14
    > print(#"www.runoob.com")
    14
    > 

      字符串替换

    a="one string"
    b= string.gsub(a, "one", "another")
    print(a)
    print(b)

       tonumber()可以将字符串转换为数字。

      tostring()将数字转换为字符串。

    8、table操作。

      a["x"] 可以缩写为 a.x

    -- 创建一个空的 table
    local tbl1 = {}
     
    -- 直接初始表
    local tbl2 = {"apple", "pear", "orange", "grape"}

      Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。  

    -- table_test.lua 脚本文件
    a = {}
    a["key"] = "value"
    key = 10
    a[key] = 22
    a[key] = a[key] + 11
    for k, v in pairs(a) do
        print(k .. " : " .. v)
    end

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

    -- table_test2.lua 脚本文件
    local tbl = {"apple", "pear", "orange", "grape"}
    for key, val in pairs(tbl) do
        print("Key", key)
    end

      #a 受限于nil。

    9、function。

      在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里:

    function factorial1(n)
        if n == 0 then
            return 1
        else
            return n * factorial1(n - 1)
        end
    end
    print(factorial1(5))
    factorial2 = factorial1
    print(factorial2(5))

      function 可以以匿名函数(anonymous function)的方式通过参数传递:

    -- function_test2.lua 脚本文件
    function testFun(tab,fun)
        for k ,v in pairs(tab) do
            print(fun(k,v));
        end
    end
    
    
    tab={key1="val1",key2="val2"};
    testFun(tab,
    function(key,val)--匿名函数
        return key.."="..val;
    end
    );

     10、x^y是次方计算。

      a%b  =a-floor(a/b)*b。x%1的结果是x的小数部分,而x-x%1的结果就是其整数部分。x-x%0.01是精确到小数点后两位。

    11、==用于相等测试。~=用于不等测试。

      如果两个值具有不同的类型,Lua就认为它们不相等。

      nil只与自身相等。
    12、and 当第一个操作数为假时,返回第一个操作数;否则返回第二个操作数。

      or 当第一个操作数为真的,中第一个操作数;否则返回第二个操作数。

    13、Lua初始化对象时,先创建对象,再赋值。所以以下代码是有效的。

    list=nil
    for line in io.lines() do
        list = {next=list,value=line}
    end

    14、do-end用于定义一个程序块。

    15、for的3个表达式,在循环开始前一次性求值。循环变量为for的local变量。

      pairs遍历表中全部key,value

      ipairs从下标为1开始遍历,然后下标累加1,如果某个下标元素不存在就终止遍历。这就导致如果下标不连续或者不是从1开始的表就会中断或者遍历不到元素。

    16、迭代器有:io.lines、pairs、ipairs、string.gmatch。

  • 相关阅读:
    Hive分组取Top N
    Hive 锁 lock
    Hive创建指向HBase表的表
    Hive Serde
    自定义UDF
    Hive使用SequenceFile存储数据
    alter table
    describe命令
    移动端,字体实际大小比设置的大,原因总结
    移动端适配基础总结
  • 原文地址:https://www.cnblogs.com/tekkaman/p/7650556.html
Copyright © 2020-2023  润新知