zoukankan      html  css  js  c++  java
  • Lua笔记5

    1. 当函数只有一个参数且该参数是字符串常量或表构造器时,括号是可选的:print "abc"
    2. 函数参数的执行行为,举例:function f (a, b) print(a, b) end
    f () --> nil nil 
    f(3) --> 3 nil 
    f(3, 4) --> 3 4 
    f(3, 4, 5) --> 3 4 ( 5被丢弃)
    
    3. 函数默认函数写法,举例:调用incCount(),默认加1操作。
    function incCount(n)
        n = n or 1
        globalCounter = globalCounter + n
    end
    
    4. 函数可变长参数...(可变长参数表达式),其行为类似于 一个具有多个返回值的函数。举例:
    function foo ( ... ) 
    local a,b,c = ...
    
    当和固定参数混用,可变参数要放在固定参数之后。
    5. 函数table.unpack与函数table.pack的功能相反。pack把参数列表转换成Lua语言中一个真实的列表(一个表),而unpack则把Lua语言中的
    真实的列表(一个表)转换成一组返回值,进而可以作为另一个函数的参数被使用。例如:a,b = table.unpack{10,20,30} -- a=10, b=20, 30被丢弃
    6. 尾调用不会使用栈空间,举例(正确的尾递归):支持任意数字作为参数,不会发生溢出。
    function foo (n) 
        if n > 0 then return foo(n - 1) end
    end 
    
    7. 尾调用判断:在调用之后是否进行其他工作。举例:
    return g(x) + 1 -- 必须进行为口法 不是尾调用
    return x or g(x) -- 必须把返回值限制为1个 不是尾调用
    return (g(x)) -- 必须把返回值限制为1个 不是尾调用
    return x[i].foo(x[j] +a*b, i + j) -- 在调用前对func及其参数求值 是尾调用
    
    8. 两个功能强大的函数:os.execute 和 io.popen
  • 相关阅读:
    log4j中Spring控制台输出Debug级信息过多解决方法
    spring使用aop
    过滤器(filter)实现用户登录拦截
    Eclipse将项目部署tomcat的webapps目录
    css初始化样例代码
    dede表单修改默认必填
    DedeCMS提交自定义表单加入验证码功能
    jQuery入门第三天
    jQuery入门第二天
    jQuery入门第一天
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/13177896.html
Copyright © 2011-2022 走看看