学习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
时间: 2024-11-05 14:58:15