[ruby-de] Denkfehler gefunden - und auch die Ursache fuer selbigen...

Wolfgang Nádasi-Donner ruby at wonado.de
Mi Aug 30 22:05:46 JST 2017


Am 30.08.2017 um 14:32 schrieb Wolfgang Nádasi-Donner:
> irb(main):002:0> "ab/cd".gsub( /\/(.)/,  '\1otto\1'.upcase)
> => "abcOTTOcd"
> .
> .
> .
> ...weil ich aktuell mit Haskell arbeite...

Bei dieser sch.... Schwüle hilft manchmal duschen um den Kopf wieder
einigermassen funktionieren zu lassen.

Ich habe natürlich einen ganz dicken Denkfehler gemacht, weil ich seit
geraumer Zeit daran gewöhnt bin, dass die Auswertung von Aufrufen "lazy"
vor sich geht.

Das ist natürlich hier nicht der Fall, weil schon beim Aufruf von "gsub"
der dort stehende Parameter "'\1otto\1'.upcase" ausgewertet wird und
"\1OTTO\1" an gsub übergeben wird.

Die "lazy evaluation" kann ich in diesem Fall mittels eines Blocks
erreichen, aber so natürlich nicht.

Für mich war das eine wichtige Lektion. Ich werde ab jetzt mal
sicherheitshalber sehr vorsichtig 'rangehen, wenn ich etwas in einer
Sprache programmiere, die nicht "lazy evaluation" als Standard einsetzt.

Gut, hat sich also erledigt.

Viele Grüsse, WoNáDo


Mehr Informationen über die Mailingliste ruby-de