Tipos básicos no Ruby


Leia em 1 minuto

Alguns dos tipos básicos do Ruby possuem atalhos para definir valores como strings e arrays, por exemplo. Uma coisa muita gente não sabe, é a diferença entre os diversos tipos de atalhos, como você poderá conferir abaixo.

Strings

Existem cinco maneiras diferentes de se definir uma string no Ruby.

string = "Ruby is awesome!"
string = 'Ruby is awesome!'
string = %q(Ruby is awesome!)
string = %Q(Ruby is awesome!)
string = <<-TXT
Ruby is awesome!
TXT

O que difere uma das outras é a capacidade de se interpolar código Ruby na string.

lang = "Ruby"

puts "#{lang} is awesome!"
# => Ruby is awesome!

puts '#{lang} is awesome!'
# => #{lang} is awesome!

puts %Q(#{lang} is awesome!)
# => Ruby is awesome!

puts %q(#{lang} is awesome!)
# => #{lang} is awesome!

puts <<-TXT
#{lang} is awesome!
TXT
# => Ruby is awesome!

Arrays

O Array também possui formas diferentes de instanciação.

items = ["Ruby", "is", "awesome!"]
items = %w(Ruby is awesome!)
items = %W(Ruby is awesome!)

E de forma similar, a diferença entre as duas últimas formas é a interpolação de código Ruby.

lang = "Ruby"

items = %w(#{lang} is awesome!)
# => ["\#{lang}", "is", "awesome!"]

items = %W(#{lang} is awesome!)
# => ["Ruby", "is", "awesome!"]

Expressões regulares

Expressões regulares podem ser definidas de três formas diferentes.

regex = /ruby/sim
regex = %r(ruby)sim
regex = Regexp.new("ruby", Regexp::MULTILINE|Regexp::IGNORECASE|Regexp::EXTENDED)

Não existem diferenças na execução das expressões regulares; na prática, se sua expressão possui muitas aspas, é interessante usar o atalho %r().

Comandos Shell

A execução de comandos Shell pode ser feita de três maneiras diferentes.

`pwd`
%x(pwd)
system "pwd"

A única diferença prática é que o método system irá enviar o resultado para STDOUT, enquanto %x(pwd) e `pwd` irão retornar a resposta da execução.