@Variáveis de Instância
Variáveis que começam com uma arroba são variáveis de instância.
@y
@somente_o_maior_pedaco_de_bacon_que_eu_ja_vi
# são exemplos.
Estas variáveis são muito usadas para se definir atributos de alguma coisa. Por exemplo, você pode prover o Ruby com a largura da porta_da_frente criando a variável @largura dentro daquela porta_da_frente. Variáveis de instância são usadas para se definir características de um objeto em Ruby.
Pense no símbolo arroba (at) como significando atributo.
@@Variáveis de Classe
Variáveis que começam com duas arrobas são variáveis de classe.
@@@y@
@@@vou_pegar_seus_bacons_pedacudos_e_ensinar_uma_licao_a_voces_dois@
# são exemplos.
Variáveis de classe são usadas, também, para se definir atributos. Mas ao invés de definir um atributo a apenas um objeto no Ruby, variáveis de classe dão um atributo a vários objetos relacionados no Ruby. Se as variáveis de instância estipulam atributos para só uma porta_da_frente, então variáveis de classe estipulam atributos para tudo que for Porta.
Pense no prefixo da dupla arroba significando atribua a todos. Adicionalmente, você pode pensar em um esquadrão de AT-ATs do Guerra nas Estrelas, que são comandados pelo Ruby. Você muda uma variável de classe e não apenas uma muda, todas elas mudam.
$Variáveis Globais
Variáveis que começam com um cifrão são globais.
$1
$pedacudo; $BAcOn_PeDAcUDo
# são exemplos.
A maioria das variáveis são temporárias por natureza. Algumas partes do seu programa são como casas. Você entra e elas têm suas próprias variáveis. Em um casa, você pode ter um pai que representa Archie, um caixeiro-viajante colecionador de esqueletos. Em outra casa, pai pode representar Peter, um domador de leões com grande apreço por flanela. Cada casa tem um sentido próprio para pai.
Com variáveis globais, você garante que a variável será a mesma em cada casinha. O sinal de cifrão é bem apropriado. Todo lar Americano respeita o valor do cifrão. Somos doidos pela coisa. Tente bater em qualquer porta na América e dê a eles dinheiro. Eu posso garantir que você não verá a mesma reação se bater em uma porta e oferecer Peter, um domador de leões com grande apreço por flanela.
Variáveis globais podem ser usadas em qualquer lugar no seu programa. Elas nunca saem da vista.
Bem e como eu sei quais são todas essas variáveis globais?
$!
$"
$$
$&
$'
$*
$+
$,
$-0
$-F
$-I
$-K
$-a
$-d
$-i
$-l
$-p
$-v
$-w
$.
$/
$0
$:
$;
$< $= $>
$?
$@
$DEBUG
$FILENAME
$KCODE
$LOADED_FEATURES
$LOAD_PATH
$PROGRAM_NAME
$SAFE
$VERBOSE
$\
$_
$`
$deferr
$defout
$stderr
$stdin
$stdout
$~
Creditos: Livro O Guia (comovente) de Ruby do Why.



