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
  • 相关阅读:
    RHCE考试要求
    c语言:md5函数
    c语言:计算输入字符个数
    IP数据报之Internet Header Length
    常用的tar和rpm命令参数
    Oracle数据库实例的创建、删除、修改【转载】
    Internal类或Internal成员讲解
    序列化与反序列化 BinaryFormatter.Serialize 方法 (Stream, Object)
    oracle网络配置listener.ora、sqlnet.ora、tnsnames.ora
    Oracle启动模式及其常见问题探讨
  • 原文地址:https://www.cnblogs.com/tekkaman/p/7675615.html
Copyright © 2011-2022 走看看