Rubi: contadores, contagem e incremento
Pergunta
Se você já viu minhas perguntas anteriores, já saberia que eu sou um grande nuby quando se trata de Ruby. Então, descobri este site destinado à programação C, mas pensei que o que se pode fazer em C, deve ser possível em Ruby (e mais legível também).
O desafio é imprimir vários números. Descobri esse método bacana .pto () e usei um bloco (e realmente entendendo seu objetivo). No entanto, no IRB, tive algum comportamento inesperado.
class MyCounter
def run
1.upto(10) { |x| print x.to_s + " " }
end
end
irb(main):033:0> q = MyCounter.new
=> #<MyCounter:0x5dca0>
irb(main):034:0> q.run
1 2 3 4 5 6 7 8 9 10 => 1
Não tenho ideia de onde vem o => 1: S devo fazer isso de outra forma? Estou esperando ter esse resultado:
1 2 3 4 5 6 7 8 9 10
Obrigado por suas respostas, comentários e feedback!
Solução
Eu não tenho idéia de onde o => 1 vem
Não se preocupe. Por padrão irb
Imprime o valor de retorno da execução do método.
Mesmo se você não escrever o return
A instrução (como em C, por exemplo) Ruby retorna o valor da última instrução computada.
Nesse caso, era 1
Isso é tudo.
Por exemplo, tente:
class WhereIsTheReturn
def uh?
14 * 3 # no return keyword
end
end
whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"
Outras dicas
O "=> 1" é do IRB, não o seu código. Após cada declaração que você digita no IRB, ele imprime o resultado dessa declaração após um prompt "=>".
Tente imprimir uma nova linha em sua função:
def run
1.upto(10) { |x| print x.to_s + " " }
print "\n"
end
Então vai ficar assim:
irb> q.run
1 2 3 4 5 6 7 8 9 10
=> nil