文件名称:函数原型-从0到1抖音运营变现手册大全
文件大小:2.13MB
文件格式:PDF
更新时间:2024-06-27 10:40:15
lua
第五章 函数与闭包 闭包( 畃畬畯畳畵畲略 )这个概念对 畃 语言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]。 申甹