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

学习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

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。