[ruby-de] file descriptors

Robert Klemme shortcutter at googlemail.com
Fr Apr 21 20:31:28 JST 2017


2017-04-20 19:38 GMT+02:00 Marvin Gülker <m-guelker at phoenixmail.de>:

> On Thu, Apr 20, 2017 at 04:21:32PM +0200, Robert Klemme wrote:
>> Eine OO-Lösung wäre eine Klasse mit der Schnittstelle von IO zu bauen,
>> die dann in den Ausgabemethoden an mehrere IO-Instanzen delegiert.
>> Sowas wie [...]
>
> Ich finde, das geht noch etwas hübscher, wenn man method_missing
> dazuzieht. Dabei entsteht dann ein Delegator für alle zugrundeliegenden
> IO-Instanzen:

Das hatte ich auch erwogen, mich aber dagegen entschieden. Es ist
nämlich nur ein Teil der Methoden, die man auf diese Weise delegieren
kann und bei den anderen richtet man u.U. Schaden an, wenn man sie so
automatisch delegiert.

Auch eine Generierung mit Metaprogrammierung über die Methodennamen
hat immer noch das Problem, dass der Rückgabewert pro Methode
festgelegt werden sollte, weil man nicht einfach den Wert der letzten
Methodenausführung nehmen will.

Fehlerbehandlung ist auch ein interessantes Thema...

> Das hat auch die gewohnte Blockform mit automatischen Schließen der
> Dateien am Ende des Blocks. Da auch #to_io delegiert wird, kann dieses
> Objekt zudem überall dort benutzt werden, wo unter Verwendung korrekten
> Duck Typings ein IO erwartet wird.

Es ist konzeptionell nicht ganz unproblematisch, die IO-Objekte extern
zu öffnen, dann aber von diesem Kollegen automatisch schließen zu
lassen. Es kann durchaus sein, dass man eins der Objekte weiter
benutzen möchte, weil es z.B. $stderr ist.

Ciao

robert


-- 
[guy, jim, charlie].each {|him| remember.him do |as, often| as.you_can
- without end}
http://blog.rubybestpractices.com/


Mehr Informationen über die Mailingliste ruby-de