码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-03-10 18:44:37      阅读:150      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!