美文网首页
函数闭包简单一例

函数闭包简单一例

作者: sidyph | 来源:发表于2018-08-10 11:12 被阅读0次

一、问题的提出

在生产中有时候会遇到这种情况:在N行代码中,只有中间的M行(M远远小于N)是变动的,这个时候我们就希望能够将中间的M行变化的部分提取出来,然后和N行代码中不变的部分进行组合使用。

例如下面这个案例:

图中红框部分的两个函数是属于M行代码,其余部分都是N行代码中不变的部分。

现在想要做到整个程序只执行collect_1day或者frm_to_dict.

如何实现?

图1 案例

二、分析

首先将不变的部分全部抽出是肯定需要的。但是这个可变的部分怎么办?不妨先暂用一个func的参数替换掉。

其次定义一个新的函数,这个函数调用了上面不变的函数,并且,在新函数里面再定义一个func函数,这个func函数和collect_1day函数发生关系,将collect_1day函数及参数全部打包在一起,这个功能就叫做闭包。

三、重构

重构后的函数见下图:

图2 重构后的函数

可以看到:

del_all_days函数是N行函数中不变的部分,func作为参数传给他,func函数传参的时候只穿函数名,而不带()

collect_frm函数里面定义的func函数参数与del_all_days函数中的func函数的参数保持一致。

func函数内部调用的其他函数如collect_1day函数的参数,直接取用的是外部函数collect_frm输入进来的参数.

del_all_days函数不需要frm_path、dict_path参数,因为二者在del_all_days函数中没有被调用,实际上是在collect_frm函数直接传给了collect_1day函数。

相关文章

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • 闭包的使用场景,使用闭包需要注意什么

    闭包 什么是闭包 闭包很简单,就是能够访问另一个函数作用域变量的函数,更简单的说,闭包就是函数,只不过是声明在其它...

  • 函数闭包简单一例

    一、问题的提出 在生产中有时候会遇到这种情况:在N行代码中,只有中间的M行(M远远小于N)是变动的,这个时候我们就...

  • 闭包

    闭包是什么;闭包的作用;闭包的一些特点。 什么是闭包,简单的说就是函数嵌套函数(红宝书),在函数作用域内,可以访问...

  • 2019-01-07

    闭包 什么叫闭包?闭包的定义其实很简单:函数 A 内部有一个函数 B,函数 B 可以访问到函数 A 中的变量,那么...

  • 闭包——十万个为什么

    什么是闭包? 简单的来说闭包就是函数。那函数是不是闭包呢? 网上有一句话js函数皆是闭包。我觉得这句话是不太准确。...

  • 知识收集

    一、闭包 理解闭包: 只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。...

  • 闭包

    闭包的概念 :闭包就是能够读取其他函数内部变量的函数 只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解...

  • 【Swift】关于闭包的几种写法

    闭包 闭包是一个特殊的函数,经常用于回调 简单举个例子:在方法中定义闭包实现回调传值 尾随闭包:1.如果闭包是函数...

  • 闭包

    闭包只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。 如何产生闭包 当...

网友评论

      本文标题:函数闭包简单一例

      本文链接:https://www.haomeiwen.com/subject/pvkkbftx.html