zoukankan      html  css  js  c++  java
  • lua keynote2

    lua keynote2

    1、Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)。

    > s, e = string.find("www.runoob.com", "runoob") 
    > print(s, e)
    5    10

    2、Lua函数可以接受可变数目的参数,和C语言类似在函数参数列表中使用三点(...) 表示函数有可变的参数。

      Lua将函数的参数放在一个叫arg的表中,#arg 表示传入参数的个数。

    function average(...)
       result = 0
       local arg={...}
       for i,v in ipairs(arg) do
          result = result + v
       end
       print("总共传入 " .. #arg .. " 个数")
       return result/#arg
    end
    
    print("平均值为",average(10,5,3,4,5,6))

    3、当参数只有一个,且为字符串或{}时,函数调用可以省略括号。

    print "Hello World"
    
    f{x=10,y=20} 
    f({x=10,y=20})
    
    type{} 
    type({})

    4、多重赋值下,若函数为最后一个调用,则返回所有return值;若函数为第一个调用,则仅返回一个值 。

    function foo2( ... )
        return "a","b"
    end
    
    x,y,b=10,foo2() --x=10,y='a',z='b'
    x,y=foo2(),10 --x='a',y=10

       函数调用传参时,也同样是这个规则:

      

    5、函数调用时加上()将只有一个返回值。 

    6、select(n,...)返回第n个变参数。select('#',..) 返回变参长度。

    7、table.sort()用于给函数排序。

    8、从技术上讲,Lua只有closure。函数是一种特殊的closure。

    9、package.loadlib(path, func_name) 实现动态机制。

    10、coroutine.wrap()不是返回协程本身,而是返回一个函数。每当调用这个函数,就可唤醒一次协程。

    11、下述代码,每次buff=buff..line都会创建一个新字符串,当buff很大时,开销会很大。

    local buff = ""
    for line in io.lines() do
        buff=buff..line.."
    "
    end
  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/tekkaman/p/7675615.html
Copyright © 2011-2022 走看看