Delphi 2009 中的匿名方法(reference to)


======================================================
注:本文源代码点此下载
======================================================

#3楼 2008-09-01 17:44 bincom[未注册用户]

看不出来哪些地方需要这样用

回复 引用

#4楼 2008-09-05 17:59 aaaaaa[未注册用户]

很不错的功能,赞一个

回复 引用

#5楼 2008-09-18 18:15 ijacker[未注册用户]

这个功能太重要了,在写框架的时候肯定是要用上的,特别是在使用模式的时候。

api函数调用中很多的时候就需要传入参数,而这个参数又恰恰必须是一个过程的指针。

设想你有很多个函数,客户端调用的时候把过程指针传入,就可以自定义处理数据的方法。

上面的例子中就有这种效果。

回复 引用

#6楼 2008-09-20 22:14 5207

感觉和c#的委托很像!

只不过感觉就是个函数指针,我还是理解的不是很彻底!继续学习

回复 引用 查看

#7楼 2008-10-09 13:16 delphi2009初学者[未注册用户]

如果参数被指定为匿名方法,哪么这个参数还能接受正常函数的函数名么???

回复 引用

#8楼 2008-10-26 21:36 codehunter[未注册用户]

这个东西说白了就是一个匿了名的函数指针,有了这个功能,能提高代码的可读性,这是我的理解。。。

回复 引用

#9楼 2009-03-25 05:58 prz[未注册用户]

匿名方法有一个重要的特性没有提到:本地变量的自动捕获 (closure).

匿名方法在声明的时候可以使用本地变量, 编译器将自动捕获这个变量, 并通过引用计数管理, 不需要再写任何代码.

可以用来实现参数的包裹. 比如有一个过程:

procedure printtext(from, message: string);

begin

writeln(from+' say '+message);

end;

那么可以如下包裹:

type

tprintmessage = reference to procedure (message: string);

function makesayproc(who: string);

begin

result:= procedure (message: string)

begin

printtext(who, message);

end;

end;

var

yousay, isay: tprintmessage;

begin

yousay:= makesayproc('you');

isay:= makesayproc('i');

yousay('hi');

isay('low');

yousay('yes');

isay('no');

yousay('stop');

isay('go go go~~');

end.

输出结果:

you say hi

i say low

you say yes

i say no

you stop

i say go go go~~

回复 引用

#10楼 2009-05-13 23:09 乌龙哈里

prz的例子好过瘾,我也敲了一遍,果然如此,能不能深入点说说实现原理,我上网查了很多,都是c#的例子,看不懂。

而且程序上看起来像绕口令,麻烦讲讲。

拜托了。

另外:

function makesayproc(who: string); 是不是要改成

function makesayproc(who: string):tprintmessage; 要不编译通不过

回复 引用 查看

#11楼 2010-04-21 15:19 林lin☆☆

请问:

在第一个例子中,如果mysqr是一个类中的方法要怎么弄啊?

回复 引用 查看

#12楼[楼主] 2010-04-21 16:04 万一

@林lin☆☆

给你做了例子, 在:

http://www.cnblogs.com/del/archive/2010/04/21/1717315.html

回复 引用 查看

注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页

首页博问闪存新闻园子招聘知识库

最新it新闻:

·ios 5.1 beta3文件预示未来 siri有可能支持 ipad和 ipod touch

·android平台12月广告浏览份额51.6% 超越ios

·测试版ios源代码显示ipad 3或将支持siri

·斯蒂芬·霍金的新电脑

·京东商城2.95亿竞得北京商业地一块

» 更多新闻...

最新知识库文章:

·javascript 面向对象编程

·持续集成之“everything is code”

·持续集成之“软件自我识别”

·持续集成之戏说check-in dance

·什么是闭包。
       我的理解

» 更多知识库文章...

china-pub 2011秋季教材巡展

china-pub 计算机绝版图书按需印刷服务

copyright ©2012 万一 powered by: 博客园 模板提供:沪江博客


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值