Delphi - 新语法介绍之For In

本文详细介绍了Delphi中for-in语法的使用方法及其实现条件,包括数组、字符串、集合、结构体等类型的遍历,并提供了示例代码演示其应用。同时,解答了关于扩展方法的问题,并讨论了Delphi类支持for-in功能的实现方式。

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

技术交流,dh讲解.

哈哈,java和c#里面的for in用起来真爽,我们delphin也不用眼红了,从d2005起,delphi里面也有这个功能了.首先我们要知道哪些类型可以用for in吧,下面就是:

for element in arrayexpr do stmt;数组

for element in stringexpr do stmt;字符串

for element in setexpr do stmt;集合

for element in collectionexpr do stmt;集合

for element in record do stmt;结构体

我们来看例子:

type

thuangjacky = (hja,hjb,hjc,hjd);

tjackyhuang = record

a,b,c:integer;

end;

const

stringexpr='huangjacky';

arrayexpr:array[0..5] of integer= (1,2,3,4,5,6);

setexpr:set of thuangjacky = [hja,hjb,hjd];

procedure tform1.formcreate(sender: tobject);

var

i:integer;

c:char;

d:thuangjacky;

f:tcomponent;

begin

for c in stringexpr do

showmessage(c);

for i in arrayexpr do

showmessage(inttostr(i));

for d in setexpr do

showmessage(inttostr(ord(d)));

for f in self do

showmessage(f.name);

end;

是不是很爽呀?哈哈,delphi也与时俱进呀.

之前写了类助手文章中,老赵问是不是扩展方法,因为对c#没有了解到这么多,所以不知道.

那么我们在java中要for in必须实现iterator吧.

那么delphi的会不会也要呢?

是的,如果我们要自己的类支持for in的话,就必须满足下面的条件:

1 必须有个公共方法getenumerator(),这个方法返回值是一个类,接口或者记录体.

2 上面返回的类,接口或者记录体中又必须有公共方法movenext(),这个方法的返回值是boolean.

3 1中返回的类,接口或者记录体中必须有一个只读的属性current,类型要和集合中的元素一样.

说了这么多,看个例子:

type

tmyintarray = array of integer;

tmyenumerator = class

values: tmyintarray;

index:integer;

public

constructor create;

function getcurrent: integer;

function movenext:boolean;

property current:integer read getcurrent;

end;

tmycontainer= class

public

function getenumerator: tmyenumerator;

end;

constructor tmyenumerator.create;

begin

inherited create;

values := tmyintarray.create(100, 200, 300);

index := -1;

end;

function tmyenumerator.movenext: boolean;

begin

if index

居然发现tmyintarray可以用create方法来创建数组,这个下去去研究下,或者万一兄已经研究过了.

好了,今天就到这里,我是dh.

绿色通道:好文要顶关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪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、付费专栏及课程。

余额充值