-
手册大全:从0到1详解抖音运营变现的函数原型
资源介绍
第五章 函数与闭包
闭包( 畃畬畯畳畵畲略 )这个概念对 畃 语言1程序员比较陌生。但在函数式编程中却是一个重要概念。如果说
畃甫甫 式的面向对象编程是把一组函数绑定到特定数据类型上的话,那么闭包可以说是把一组数据绑定到特
定函数上。
一个简单的闭包是这样的:
由 function MakeCounter ()
甲 local t = 0
申 return function ()
甴 t = t + 1
电 return t
甶 end
男 end
当调用 畍畡畫略畃畯畵畮畴略畲 后,会得到一个函数。这个函数每调用一次,返回值就会递增一。顾名思义,我们
可以把这个返回的函数看作一个计数器。畍畡畫略畃畯畵畮畴略畲 可以产生多个计数器,每个都独立计数。也就是说,
每个计数器函数都独享一个变量 畴 ,相互不干扰。这个 畴 被称作计数器函数的 畵異當畡畬畵略 ,被绑定到计数器函
数中。拥有了 畵異當畡畬畵略 的函数就是闭包。
在 界畵畡 电甮由 之前,所有的函数都实现成闭包。只是从语义上来说,畵異當畡畬畵略 数量为零的闭包被称为函数。
看这样一段代码:
由 function foobar ()
甲 return function ()
申 return "Hello"
甴 end
电 end
畦畯畯畢畡畲 每次调用都会生成一个新的、没有 畵異當畡畬畵略 的闭包,即便这些闭包在功能上完全相同。界畵畡 电甮甲
改进了这一点。它尽量复用拥有完全相同 畵異當畡畬畵略 的闭包。对于没有 畵異當畡畬畵略 的函数来说,也就不会再出现
第二份重复的对象了。
5.1 函数原型
闭包是函数和 畵異當畡畬畵略 的结合体。在 界畵畡 中,闭包统一被称为函数,而函数就是这里所指的函数原型。
原型是不可以直接被调用的,只有和 畵異當畡畬畵略 结合在一起才变成了 界畵畡 语言*用户使用的函数对象。所
1C 语言缺乏支持闭包的基本语法机制,但也有人为它做了语法扩展。Apple 公司为 C 提供了一个叫作 Blocks 的非标准扩展,可以让 C 语言支
持闭包[7]。
申甹