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
< High(Values)
then
begin
Inc(Index);
Result
:=
True
;
end
else
Result
:=
False
;
end
;
function
TMyEnumerator
.
GetCurrent:
Integer
;
begin
Result
:= Values[Index];
end
;
function
TMyContainer
.
GetEnumerator:
TMyEnumerator;
begin
Result
:= TMyEnumerator
.
Create;
end
;
var
MyContainer:
TMyContainer;
I:
Integer
;
Counter:
Integer
;
begin
MyContainer
:= TMyContainer
.
Create;
Counter
:=
0
;
for
I
in
MyContainer
do
Inc(Counter,
I);
WriteLn
(
'Counter
= '
,
Counter);
end
.
请发表评论