[linux-l] Ruby: sehr cool, aber auch sehr laaaahm... wie geht's schneller?!

Oliver Bandel oliver at first.in-berlin.de
Sa Aug 26 12:18:32 CEST 2006


Hallo,

es gibt des Rätsels Lösung....
... habe in comp.lang.ruby nochmal gefragt.


On Mon, Aug 21, 2006 at 01:48:18PM +0200, Oliver Bandel wrote:
[...]
> ================================================
> def look_for_begin
>   while line = gets
>     if line =~ /^begin/
>       puts line
>     end
>   end
> end
> 
> 
> ARGF.each { look_for_begin }
> ================================================
[...]

Das  "ARGF.each { look_for_begin }" ist Doppelmoppel mit dem
gets in der while-loop.
ARGV.each hätte das richtige gemacht; ich wollte aber das open
für Files sparen, dachte ARGF macht das.
ARGF öffnet aber nicht nur die Dateien, es gibt auch jede Zeile
des Files/der Files an das { look_for_begin } rüber.

Also habe ich zwei Schleifen, die beide die Zeilen lesen wollen.
gets dürfte demnach immer die eine zu lesende Zeile bekommen,
die ARGF bereit stellt. Und ein break/return/ eine Exception
würde nicht bis dorrthin einen Effekt haben.

Also habe ich bloß das ARGF (bzw. dessen Beschreibung) nicht
richtig aufgefasst. War iMHO nicht soooo toll beschrieben in dem
Buch (ansonsten ist es sehr gut, aber bei CLI scheint es doch etwas schlapp...).

Es gibt also einige Lösungswege, die oben angeführten Sourcen
zu einem schnelleren Ausführen zu bewegen.
(Klappt dann auch, wie ich heraus finden durfte.)

Gruß,
   Oliver




Mehr Informationen über die Mailingliste linux-l