本地变量,一般是随着函数执行结束,就不能再访问;

而如果在匿名函数,访问了外部函数的本地变量,本地变量的生命周期会被扩展

unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;typeTIntSum = reference to procedure (x, y: Integer);TForm1 = class(TForm)btn1: TButton;procedure FormCreate(Sender: TObject);procedure btn1Click(Sender: TObject);privateFIntSum: TIntSum;procedure plusXandY(x, y: Integer);{ Private declarations }publicproperty IntSum: TIntSum read FIntSum write FIntSum;{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
begin//点击button1,lResult变成130,第二次变成160,。。。plusXandY(10, 20);
end;procedure TForm1.FormCreate(Sender: TObject);
varlResult: Integer;
begin//初始化lResultlResult := 100;//将方法制定给属性,但不调用IntSum := procedure (x, y: Integer)beginlResult := lResult + x + y;ShowMessageFmt('x + y = %d', [lResult]);end;end;procedure TForm1.plusXandY(x, y: Integer);
beginintSum(x, y);end;end.

转载于:https://www.cnblogs.com/iihe602/archive/2013/02/21/2920887.html

Delphi匿名方法(三):扩展本地变量的生命周期相关推荐

  1. JVM详解之:汇编角度理解本地变量的生命周期

    文章目录 简介 本地变量的生命周期 举例说明 优化的原因 总结 简介 java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢? 带着这个问题我们来看一 ...

  2. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  3. Android静态变量的生命周期

    Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类 被卸载的时候,静态变量被销毁.在PC机的客户端程序中, ...

  4. Python学习手册之内部方法、操作符重载和对象生命周期

    在上一篇文章中,我们介绍了 Python 的类和继承,现在我们介绍 Python 的内部方法.操作符重载和对象生命周期. 查看上一篇文章请点击:https://www.cnblogs.com/dust ...

  5. C++异常(异常的基本语法、栈解旋unwinding、异常接口声明、异常变量的生命周期、异常的多态使用、C++系统标准异常库)

    文章目录 1 异常的基本概念 1.1 C语言中的异常处理 1.2 C++中的异常处理 1.3 异常严格类型匹配 2 栈解旋(unwinding) 3 异常的接口声明[C++11已废弃] 4 异常变量的 ...

  6. C/C++构造及析构顺序及变量的生命周期

    (1)变量的构造及析构顺序 1)在全局范围内定义的对象(即在所有函数之外定义的对象),它的构造函数在文件中的所有函数(包括main函数)执行之前调用.如果一个程序中有多个文件,而不同文件之间都定义了全 ...

  7. c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)

    异常接口声明 为了加强程序的可读性,可以在函数声明中列出可能抛出异常的所有类型,例如:void func() throw(A,B,C);这个函数func能够且只能抛出类型A,B,C及其子类的异常 如果 ...

  8. 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)

    一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率.  匿名类的声明语法:  var o ...

  9. 便携式激励vs形式化vsUVM验证方法在IP块的整个生命周期中的比较分析

    摘要-验证技术和方法不断发展,以应对日益严峻的验证挑战.当今行业的最新技术是基于UVM和基于形式化(Formal)的验证流程.事实证明,这两种技术都可以显著提高验证质量,但缺点是测试用例或激励不能&q ...

最新文章

  1. solrcloud Read and Write Side Fault Tolerance
  2. ehcache 简介
  3. java 向量空间模型_VSM向量空间模型对文本的分类以及简单实现
  4. 利用cx_Freeze将py文件打包成exe文件(图文全解)
  5. 关于Flex-Mvc的几个框架的简单介绍
  6. Game with Telephone Numbers
  7. 谷歌大脑联手Hinton提出SimCLR新框架,疯狂提升自监督学习性能
  8. 逆向课程第二讲,寻找main入口点
  9. Notes on how to use Webots, especially how to make a robot fly in the air
  10. html flex 表单样式,Flexbox 布局的最简单表单的实现
  11. 2017年WorkApplication牛客网线上机试题
  12. 关于QT中对窗口中某个widget建类
  13. 响应式开发---网页的布局方式、媒体查询、栅格化布局、less语言
  14. numpy线性代数基础 - Python和MATLAB矩阵处理的不同
  15. 洛谷 P2678 [NOIP2015提高组] 跳石头(二分答案)
  16. nfc pm3 模拟加密门禁卡_关于如何用PM3将有密门禁卡写入支持NFC的手机
  17. 计算机网络管理公开课观后感,青年网络公开课观后感
  18. VM189:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
  19. 计算机网络体系批判,基于批判性思维的计算机网络概论课程改革.pdf
  20. 成都二手房长啥样 —— 基于链家数据

热门文章

  1. MySQL连接相关问题(查看及设置连接数)
  2. MySQL优化关联查询
  3. 【学亮IT手记】oracle集合运算
  4. Spring AOP底层实现原理
  5. scala调用java代码_scala调用java代码
  6. Qt工程文件Pro中判断Qt版本号
  7. 测度论相关概念(吐)
  8. 酷狗音乐怎样复制歌词到计算机,酷狗怎么复制歌词和歌曲到mp3上
  9. linux根文件系统创建过程
  10. 诸神战纪2java_诸神战纪2死神归来