Proto Inheritance

The deeply Version of foreach

The foreach loop normally iterates over each slot in a frame. In some cases, however, you may want to iterate over not only a frame's slots, but the slots that the frame inherits, as well. The deeply version of foreach does exactly that. It iterates over each slot, including inherited slots, but skips the _proto slot.

Here is an example that shows the difference:

foo := {a: 3, b: 6};
bar := {_proto: foo, a: 5};

foreach name, value deeply in bar do begin
   Write(name & ": ");
   Print(value);
end;
a: 5
a: 3
b: 6

foreach name, value in bar do begin
   Write(name & ": ");
   Print(value);
end;
_proto: {
	a: 3, 
	b: 6}
a: 5

An online version of Programming for the Newton using Macintosh, 2nd ed. ©1996, 1994, Julie McKeehan and Neil Rhodes.

Last modified: 1 DEC 1996