Ho un metodo arbitrario in Ruby che produce valori multipli in modo che possa essere consegnato ad un blocco:Un metodo Ruby può produrre come iteratore o restituire un array in base al contesto?
def arbitrary
yield 1
yield 2
yield 3
yield 4
end
arbitrary { |x| puts x }
mi piacerebbe modificare questo metodo in modo che, se non v'è alcun blocco, restituisce solo il valori come una matrice. Quindi anche questo costrutto funzionerebbe:
myarray = arbitrary
p a -----> [1, 2, 3, 4, 5]
E 'possibile in Ruby?
Perfetto, grazie. –
Se sostituisci "if block" con "if block_given?", Non devi nemmeno rendere esplicito l'argomento "& block", e puoi bastare con "def arbitrary". Questa è una pratica comune di Ruby. – molf
@Molf: hai assolutamente ragione. – bltxd