Thread Frage zur for-Schleife (14 answers)
Opened by Gast at 2008-02-27 14:01

murphy
 2008-02-28 21:06
#106481 #106481
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
KurtZ+2008-02-28 01:50:56--
@Murphy:
perl5005delta - what's new for perl5.005
"foreach (1..1000000)" optimized

ist mir eigentlich neu genug


Stimmt schon. Trotzdem ist es doof, dass diese Optimierung im Prinzip ein Implementationsdetail ist und nicht vom Sprachstandard vorgesehen wird. Aber andererseits ist das bei Perl nicht schrecklich relevant da es nur eine Implementation gibt ;-)

Quote
Quote
Außerdem fehlt leider die Möglichkeit, Objekten eigener Klassen eine Iterationsfunktionalität zu verpassen :-(


ähm ich verstehe dich nicht ganz, was hindert dich daran eine Klassenvariable anzulegen die ein Array aller Objektrefs ist.
(ungetesteter Code)


Daran hindert mich gar nichts, es ist aber umständlich, speicheraufwändig und nicht intuitiv zu benutzen wenn eigentlich das Objekt selber eine iterierbare Datenstruktur sein soll.

Quote
oder eine Klassenmethode next() anzulegen:


Auch daran hindert mich nichts, aber es ist nicht threadsicher und ebenfalls unintuitiv zu benutzen, weil es sich wie auch die Lösung mit der Instanzvariablen einfach anders verhält als die Iteration über ein natives Array.

Quote
oder was möchtest du genau???


Etwas wie das Iterable-Interface von Java, C# oder jeder anderen vernünftigen objektorientierten Sprache ;-)

Es stört mich einfach, dass das Iterieren über Kollektionen von Objekten im Speziellen und die Typen von Kollektionen im Allgemeinen bei Perl nicht konsequent aus einem Guss sind. Für meinen Geschmack würde es von besserem Sprachdesign zeugen, wenn man zum Beispiel sowohl foreach my $value (@stuff) { ... } als auch foreach my ($key, $value) (%stuff) { ... } als auch foreach my $line (<>) { ... } als auch foreach my $sonstwas ($irgendein_objekt) { ... } schreiben könnte und keine dieser Varianten nutzlos Speicher verpulvern würden.

Das fällt aber wie gesagt in den Bereich der Geschmacksfragen und wenn's mir nicht passt, muss ich ja kein Perl programmieren ;-)
When C++ is your hammer, every problem looks like your thumb.

View full thread Frage zur for-Schleife