Agora que já somos amigos de longa data do método puts, está na hora de conhecer o resto da família, assim como saber um pouco mais sobre o nosso amigo. Sendo assim, inicie e o irb e prepare-se para mais uma dose de Ruby.

puts

Como já disse antes, o método puts exibe(ou imprime) o seu argumento na saída padrão, que no caso é a janela de comando, e logo depois insere um caractere de nova linha, ou seja, pula uma linha. Para vê-lo em funcionamento mais uma vez, digite as intruções abaixo no irb.

puts "Ola novamente, amigo rubysta"
puts "Como vai a familia?"
puts "A minha voce conhecera logo abaixo"

Ok, nenhuma novidade acima, uma vez que já havíamos visto o puts imprimir a string que passamos pra ele. Acontece que ele pode receber mais de um argumento em uma única chamada, como demonstrado na seguinte instrução:

puts "Primeiro argumento", "Segundo argumento", "Terceiro argumento"

Como vimos, para passarmos mais de um argumento pro puts, basta inserir uma vírgula entre cada argumento. Além disso, o puts os exibirá na ordem que passarmos, e também irá inserir um caractere de nova linha depois de exibir cada um deles.

print

O método print é o irmão preguiçoso do puts. Assim como este último, ele exibe na saída padrão o argumento que passarmos pra ele, só que ele é ocupado demais pra inserir um caractere de nova linha pra nós. Veja abaixo e comprove você mesmo.

print "Nao insista, nao irei pular uma linha pra voce"

Como acabamos de confirmar, ele realmente se limita a imprimir apenas o argumento que passamos pra ele, sendo assim, o irb exibe o retorno dessa instrução(=>nil) imediatamente após a string que passamos pro print.

Agora vamos testar se o print, assim como o puts, aceita mais de um argumento em uma única chamada. Sendo assim, digite o código a seguir.

print "Uma", "Saida", "Horrivel"

Ao executarmos esta instrução no irb, confirmamos que o print também aceita mais de um argumento em uma mesma chamada, só que a saída gerada fica péssima. Além do => nil, o retorno da instrução, ficar colado com o último argumento, cada argumento é exibido imediatamente após o outro.

Mas como nós somos bons demais pra sermos vencidos pelo print, iremos fazê-lo pular uma linha de qualquer jeito. Para isso, temos que inserir explicitamente um caractere de nova linha, que é representado pela sequência de escape \n. Se você não está familiriarizado com este recurso, saiba que sequências de escape são sequências de caracteres começadas por \ e que servem para representar caracteres especiais, como o caractere de nova linha(\n). Além disso, elas podem ser usadas dentro de strings de forma geral, ou seja, não funciona apenas com o método print. Mas não se preocupe, futuramente voltarei a falar sobre o assunto. Por hora, digite a instrução abaixo e veja o resultado.

print "Agora sim!\n", "Uma linha pra cada argumento\n", "Finalmente temos um pouco de espaco\n"

Não disse que consegueríamos dobrar o print? Cada argumento agora está em uma linha separada, exatamente como queríamos.

printf

O último é o printf, de longe o método mais sofisticado da família. Ele pode ser usado de forma simples, ou seja, com apenas um argumento e se comportando exatamente como o print, como neste caso:

printf "Argh, estou me comportando como o print"
printf "Que vergonha para um metodo refinado como eu\nNunca me senti tao humilhado\n"

No entanto, o printf tem mais utilidade quando o usamos com mais de um argumento, sendo o primeiro deles uma string chamada string de formato, que define como a saída será formatada. Os argumentos posteriores representam os valores que serão inseridos no formato definido pela string de formato.

printf "%s\n%s\n", "Agora esta melhor", "Finalmente um uso digno de minha competencia"

O caractere %s é um especificador de formato, e simboliza que na saída gerada pelo printf, aquele local será substituído por uma string. Existem outros especificadores de formato, aos quais nós veremos futuramente.

Uma curiosidade sobre o printf, é que ele nasceu originalmente na linguagem C, tendo inclusive o mesmo nome, e desde então já passou por algumas outras linguagens, como no Java, por exemplo.

Por fim, embora ainda haja muitas outras coisas interessantes que o printf pode fazer, iremos analisá-lo em maiores detalhes no futuro, quando já tivermos visto alguns assuntos necessários ao melhor entendimento do seu funcionamento.

puts “Fim do post”

Chegamos ao fim de mais um post. Espero que tenham gostado e que tenham entendido o funcionamento destes três métodos. É claro que há muito mais coisas a serem ditas sobre eles, mas com o que foi mostrado aqui já dá pra ter uma boa idéia do funcionamente básico de cada um deles.