Entrada e Saída de Dados

Entrada

A entrada de dados é muito simples:

irb(main):005:0> variavel = gets.chomp
esta é uma string
=> "esta é uma string"
  • Método gets: captura uma string digitada pelo usuário.
  • Método chomp: remove o fim de string e caracteres de nova linha, se houver.

Para armazenar outros tipos de dados, use métodos que convertam strings:

irb(main):005:0> outra_variavel = gets.chomp.to_i
23
=> 23
irb(main):006:0> outra_variavel.class
=> Fixnum
  • Métodos de conversão:
    • to_i: converte para inteiro (Fixnum).
    • to_f: converte para decimal/real (Float).
    • to_s: converte para string (String).
    • to_sym: converte para símbolo (Symbol).

Saída

Para exibir alguma coisa para o usuário, use os métodos print e puts. O método print exibe o valor de qualquer variável, já o puts é o oposto do método gets, este recebe uma string, já aquele exibe uma string.

# saida.rb

nova_variavel = 42

print nova_variavel
print "\n"

puts "Olá, trainee!"
$ ruby saida.rb
42
Olá, trainee!
  • Caracter '\n': pula para a próxima linha.

O método puts sempre vai pular linha após exibir a string, já o print não.

E se quiséssemos imprimir um inteiro junto com uma string? Nesse caso podemos converter o inteiro para string e usar a operação de concatenação:

# saida.rb

meu_inteiro = 37_672

print "O meu inteiro é " + meu_inteiro.to_s + "!\n"
$ ruby saida.rb
O meu inteiro é 37672!

Ou, de uma forma mais fácil, usar a interpolação, que converte automaticamente variáveis de outros tipos para strings:

# saida.rb

meu_inteiro = 37_672

print "O meu inteiro é #{meu_inteiro}!\n"

Qual a diferença de strings com aspas simples e duplas? As strings de aspas simples podem ser sutilmente mais rápidas que as declaradas com aspas duplas porque o analisador léxico do Ruby nãp tem que checar se existem marcadores de interpolação #{}, mas a diferença chega a ser insignificante. Sempre é bom declarar strings com aspas duplas, no caso de precisar interpolar alguma variável dentro desta string.