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!

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top