|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2023/6/4 14:46:22 |
标题: |
|
加入我的收藏 |
楼主: |
其它语言搞了一个闭包的概念,感觉莫名其妙,说是函数里面定义函数,内部函数可以访问外部函数的变量。这有什么特别的吗?内部当然应该可以访问外部函数的变量,并且这些变量在外部函数退出前一直保持存在不被释放。
这是Delphi的函数内嵌套函数,大家看一看是不是闭包:
procedure func1; var a: Integer; func2: TProc; begin a := 0; ShowMessage(a.ToString); // 0
func2 := procedure begin a := 2; end; func2;
ShowMessage(a.ToString); // 2 end;
----------------------------------------------
- |
作者: |
|
2023/6/5 11:59:04 |
1楼: |
delphi的匿名函数实际上跟js里的闭包类似
----------------------------------------------
-
|
作者: |
|
2023/6/5 14:12:20 |
2楼: |
闭包好吗? 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value) 这个完全破坏了访问严紧性呀。讲难听一点,是某一些语言没有办法很方便地实现某些功能而创造出来的一个新名词。
----------------------------------------------
链接:https://pan.baidu.com/s/12jzmECYKhGCsHBxz8tmB6w 提取码:pelr --来自百度网盘超级会员V9的分享
|
作者: |
|
2023/6/5 19:44:25 |
3楼: |
闭包这种名词,我觉得没必要去理会它。
至于 Delphi 的匿名函数,有时候用它可以减少代码量,或者降低代码的复杂性,适当的场合可以使用。
----------------------------------------------
-
|
|