Delphi匿名方法(三):扩展本地变量的生命周期
本地变量,一般是随着函数执行结束,就不能再访问;
而如果在匿名函数,访问了外部函数的本地变量,本地变量的生命周期会被扩展
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匿名方法(三):扩展本地变量的生命周期相关推荐
- JVM详解之:汇编角度理解本地变量的生命周期
文章目录 简介 本地变量的生命周期 举例说明 优化的原因 总结 简介 java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢? 带着这个问题我们来看一 ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- Android静态变量的生命周期
Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类 被卸载的时候,静态变量被销毁.在PC机的客户端程序中, ...
- Python学习手册之内部方法、操作符重载和对象生命周期
在上一篇文章中,我们介绍了 Python 的类和继承,现在我们介绍 Python 的内部方法.操作符重载和对象生命周期. 查看上一篇文章请点击:https://www.cnblogs.com/dust ...
- C++异常(异常的基本语法、栈解旋unwinding、异常接口声明、异常变量的生命周期、异常的多态使用、C++系统标准异常库)
文章目录 1 异常的基本概念 1.1 C语言中的异常处理 1.2 C++中的异常处理 1.3 异常严格类型匹配 2 栈解旋(unwinding) 3 异常的接口声明[C++11已废弃] 4 异常变量的 ...
- C/C++构造及析构顺序及变量的生命周期
(1)变量的构造及析构顺序 1)在全局范围内定义的对象(即在所有函数之外定义的对象),它的构造函数在文件中的所有函数(包括main函数)执行之前调用.如果一个程序中有多个文件,而不同文件之间都定义了全 ...
- c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)
异常接口声明 为了加强程序的可读性,可以在函数声明中列出可能抛出异常的所有类型,例如:void func() throw(A,B,C);这个函数func能够且只能抛出类型A,B,C及其子类的异常 如果 ...
- 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率. 匿名类的声明语法: var o ...
- 便携式激励vs形式化vsUVM验证方法在IP块的整个生命周期中的比较分析
摘要-验证技术和方法不断发展,以应对日益严峻的验证挑战.当今行业的最新技术是基于UVM和基于形式化(Formal)的验证流程.事实证明,这两种技术都可以显著提高验证质量,但缺点是测试用例或激励不能&q ...
最新文章
- solrcloud Read and Write Side Fault Tolerance
- ehcache 简介
- java 向量空间模型_VSM向量空间模型对文本的分类以及简单实现
- 利用cx_Freeze将py文件打包成exe文件(图文全解)
- 关于Flex-Mvc的几个框架的简单介绍
- Game with Telephone Numbers
- 谷歌大脑联手Hinton提出SimCLR新框架,疯狂提升自监督学习性能
- 逆向课程第二讲,寻找main入口点
- Notes on how to use Webots, especially how to make a robot fly in the air
- html flex 表单样式,Flexbox 布局的最简单表单的实现
- 2017年WorkApplication牛客网线上机试题
- 关于QT中对窗口中某个widget建类
- 响应式开发---网页的布局方式、媒体查询、栅格化布局、less语言
- numpy线性代数基础 - Python和MATLAB矩阵处理的不同
- 洛谷 P2678 [NOIP2015提高组] 跳石头(二分答案)
- nfc pm3 模拟加密门禁卡_关于如何用PM3将有密门禁卡写入支持NFC的手机
- 计算机网络管理公开课观后感,青年网络公开课观后感
- VM189:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
- 计算机网络体系批判,基于批判性思维的计算机网络概论课程改革.pdf
- 成都二手房长啥样 —— 基于链家数据