• 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
  • 相关阅读:
    Linux 发展历史
    购物车0612版登陆与购物功能
    Linux 基本命令
    MySQL练习
    购物车登陆购物版
    MySQL阅读目录
    输入打印之佛祖辟邪
    mysql存储引擎
    函数对象、函数嵌套、名称空间与作用域、装饰器
    【计算机网络】哈尔滨工业大学MOOC-计算机网络 第2周 计算机网络概述(下) 作业2
  • 原文地址:https://www.cnblogs.com/tekkaman/p/7675615.html
Copyright © 2020-2023  润新知