Lua closure

前言#

“closure”,一个之前我从没见过的词出现在了lua的编程世界中,lua将其解释为闭包,它具有着这种特性:将一个函数写在另一个函数之内,那么这个位于内部的函数便可以访问外部函数中的局部变量,这项特性称之为词法域。

示例#

接下来我们可以利用这个特性来实现一个自己的计数器:

  • 首先我们新建一个lua文件,命名为counter.lua
  • 在文件中编写lua代码
  • 实现计数器的代码如下:
-- 实现部分
function create_a_counter()
    local count=0
    return function()
        count = count + 1
        return count
    end
end

-- 调用部分
local mycounter = create_a_counter();

print("counter = "..mycounter())
print("counter = "..mycounter())
print("counter = "..mycounter())
print("counter = "..mycounter())
print("counter = "..mycounter())
print("counter = "..mycounter())
  • 结果
Lua closure_第1张图片
closure.png

总结#

  • 我们可以利用这项特性实现很多功能,比如计数器。
  • 调用的时候需要注意,需要调用mycounter()而不是 create_a_counter()。
  • create_a_counter()返回的是一个函数而不是一个值,如果你试图打印它,只能得到类似这样的结果function: 002EFE40

你可能感兴趣的:(Lua closure)