Skript, das für stdin ausgeführt wird, wenn kein arg; sonst Eingabedatei = ARGV [0]

7

Das funktioniert ganz gut - nur gefragt, ob es Verbesserungen gibt, um es zu verkürzen?

%Vor%     
monojohnny 06.01.2010, 14:07
quelle

3 Antworten

18

Sie können die ersten fünf Zeilen vollständig eliminieren.

Von Spitzhacke

  

$ & lt ;: Ein Objekt, das Zugriff auf bietet   die Verkettung der Inhalte von   alle Dateien als Befehlszeile angegeben   Argumente oder $ stdin (falls   es gibt keine Argumente). $ & lt; unterstützt   Methoden ähnlich einem File-Objekt:   binmode, nah, geschlossen ?,   each_byte, each_line, eof, eof ?, Datei,   Dateiname, Dateino, Getc, Gets, Lineno,   lineno =, weg, pos, pos =, lesen,   readchar, readline, readlines, rewind,   suchen, überspringen, erzählen, to_a, to_i, to_io,   to_s, zusammen mit den Methoden in   Aufzählbar. Die Methodendatei gibt a zurück   Dateiobjekt für die Datei derzeit   gelesen werden. Dies kann sich ändern als $ & lt;   liest die Dateien auf dem Befehl durch   Linie. [r / o]

Daher:

%Vor%

Kernel.gets ist eine Abkürzung für $ & lt; .gets, also:

%Vor%     
Wayne Conrad 06.01.2010, 15:13
quelle
3

Nur ARGV ? funktioniert für mich, "r" normalerweise default, also kann es übersprungen werden, und File.new() kann dasselbe sein wie File() , also

%Vor%     
YOU 06.01.2010 14:17
quelle
2

then und ; sind optional

Sie können auch den ternären Operator verwenden:

%Vor%     
makevoid 06.01.2010 14:10
quelle

Tags und Links