J'ai une méthode arbitraire dans Ruby qui donne des valeurs multiples de sorte qu'il peut être remis à un bloc:Une méthode Ruby peut-elle produire un itérateur ou renvoyer un tableau en fonction du contexte?
def arbitrary
yield 1
yield 2
yield 3
yield 4
end
arbitrary { |x| puts x }
J'aimerais modifier cette méthode de sorte que, s'il n'y a pas de bloc, il retourne juste la valeurs en tant que tableau. Donc, cette construction fonctionnerait également:
myarray = arbitrary
p a -----> [1, 2, 3, 4, 5]
Est-ce possible dans Ruby?
Parfait, merci. –
Si vous remplacez "if block" par "if block_given?", Vous n'avez même pas besoin de rendre l'argument "& block" explicite, et vous pouvez suffire avec "def arbitrarary". C'est une pratique courante de Ruby. – molf
@Molf: Vous avez absolument raison. – bltxd