Ruby · Avançado · Inglês · Técnico
instance variable get
Método de Object que lê uma variável de instância pelo nome, mesmo sem leitor público; existe também instance_variable_set. Faz parte da reflexão do Ruby.
Onde usar
Aparece em serializadores, depuradores e testes que inspecionam estado interno. Em código de produção, quebrar o encapsulamento assim é sinal de alerta.
Em código
class Conta
def initialize; @saldo = 50; end
end
c = Conta.new
p c.instance_variable_get(:@saldo) # => 50
c.instance_variable_set(:@saldo, 80)
p c.instance_variable_get(:@saldo) # => 80Exemplos
The test peeks at the state with instance_variable_get.
O teste espia o estado com instance_variable_get.
Reading private state this way breaks encapsulation.
Ler estado privado assim quebra o encapsulamento.
Cuidado
O nome precisa começar com @, senão lança NameError. Não o confunda com send, que chama métodos.
Sinônimos
reflexão