Ciao a tutti, ho da poco iniziato a studiare Ruby e facendo vari test mi
sono imbattutto in qualcosa che non ho ancora perfettamente afferratto.
Questo blocco di codice funziona correttamente:
File.open @file, 'r' do |f|
while line = f.gets
puts line
end
end
Mentre se lo “inglobo” all’interno di un metodo
def leggi
File.open @file, 'r' do |f|
while line = f.gets
STDOUT.puts line
end
end
end
sono appunto obbligato a mettere STDOUT oppure $stdout prima di puts
altrimenti ricevo un errore.
(Uninitialized Strem IOError)
Perchè solo “puts line” come nel primo caso non va bene.
Si tratta sicuramente di “questione di ambito” ma non ho capito bene il
funzionamento.
Grazie mille.