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.