javascript閉包,轉 python 閉包的說明

 2023-10-21 阅读 26 评论 0

摘要:引自 http://www.fuzhijie.me/?p=211 我感覺閉包和函數對象本質上是同一種東西,閉包是函數對象的簡化。閉包將環境數據保存在func_closure中,函數對象則將相關數據保存在對象中。javascript閉包,二者均可用于filter、map、reduce等函數中。 在IBM dW有篇文
引自 http://www.fuzhijie.me/?p=211

我感覺閉包和函數對象本質上是同一種東西,閉包是函數對象的簡化。閉包將環境數據保存在func_closure中,函數對象則將相關數據保存在對象中。javascript閉包,二者均可用于filter、map、reduce等函數中。

在IBM dW有篇文章講閉包的概念,上面講支持閉包的語言有這樣的特性:
1、函數是一階值(First-class value),即函數可以作為另一個函數的返回值或參數,還可以作為一個變量的值。java閉包?
2、函數可以嵌套定義,即在一個函數內部可以定義另一個函數。

顯然Python對這兩個特性支持都非常好,Java要想支持閉包改動就有點大了。在Python中函數同類差不多,而在Java中類是最小的組織單元,目前JDK 6.0上面兩個特性一個都不支持。至于C++這樣更底層的語言要支持閉包估計是不可能的。

另一個文章說
“另一種說法認為閉包是由函數和與其相關的引用環境組合而成的實體。比如參考資源中就有這樣的的定義:在實現深約束時,需要創建一個能顯式表示引用環境的東西,并將它與相關的子程序捆綁在一起,這樣捆綁起來的整體被稱為閉包。”
看著更嚴格些

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/158803.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息