DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 1djhgfjs
今日帖子: 15
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 vclclx (vclclx) ★☆☆☆☆ -
普通会员
2023/6/4 14:46:22
标题:
这个函数/过程是闭包吗? 浏览:589
加入我的收藏
楼主: 其它语言搞了一个闭包的概念,感觉莫名其妙,说是函数里面定义函数,内部函数可以访问外部函数的变量。这有什么特别的吗?内部当然应该可以访问外部函数的变量,并且这些变量在外部函数退出前一直保持存在不被释放。

这是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;
----------------------------------------------
-
作者:
男 souledge (souledge) ★☆☆☆☆ -
普通会员
2023/6/5 11:59:04
1楼: delphi的匿名函数实际上跟js里的闭包类似
----------------------------------------------
-
作者:
男 supermay (supermay) ★☆☆☆☆ -
盒子活跃会员
2023/6/5 14:12:20
2楼: 闭包好吗?
闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value)
这个完全破坏了访问严紧性呀。讲难听一点,是某一些语言没有办法很方便地实现某些功能而创造出来的一个新名词。
----------------------------------------------
链接:https://pan.baidu.com/s/12jzmECYKhGCsHBxz8tmB6w 提取码:pelr --来自百度网盘超级会员V9的分享
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2023/6/5 19:44:25
3楼: 闭包这种名词,我觉得没必要去理会它。

至于 Delphi 的匿名函数,有时候用它可以减少代码量,或者降低代码的复杂性,适当的场合可以使用。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行42.96875毫秒 RSS