首页 > 移动平台 > 详细

Lua的方法的一些特性--lua和android

时间:2015-03-10 18:43:04      阅读:435      评论:0      收藏:0      [点我收藏+]

学习lua不得不了解其方法或者说语法的特性,比如:
多值返回

function maximum (a)
    local mi = 1 -- maximum index
    local m = a[mi] -- maximum value
    for i,val in ipairs(a) do
        if val > m then
            mi = i
            m = val
        end
    end
return m, mi
end

print(maximum({8,10,23,12,5})) --> 23 3

可变参数

function g (a, b, ...) end
或者 function g (...) end


CALL             PARAMETERS
g(3)              a=3, b=nil, arg={n=0}
g(3, 4)          a=3, b=4, arg={n=0}
g(3, 4, 5, 8)   a=3, b=4, arg={5, 8; n=2}

尾调用

感觉类似递归,递归是调用自己,尾调用调的函数不一定是自己

感觉类似递归,递归是调用自己,尾调用调的函数不一定是自己
function foo (n)
    if n > 0 then return foo(n - 1) end
end

function f (x)
    // do something at x
    return  g(x)
end
优点:
尾调用不需要使用栈空间(自身栈控件),那么尾调用递归的层次可以无限制的,而不用担心栈溢出。
 
这些不是尾调用:
function f (x)
    // 不是尾调用
    g(x)
 return -- must return function
    return g(x) + 1 -- must do the addition
    return x or g(x) -- must adjust to 1 result
    return (g(x)) -- must adjust to 1 result
end

 

 

Lua的方法的一些特性--lua和android

原文:http://www.cnblogs.com/LiuSiyuan/p/4326596.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!