Referência na ciência da computação é registro que aponta o local em que se encontram armazenados os dados que identificam outro dado. Nas linguagens tradicionais variáveis são como canecas fixas e os primitivos são pequenos o suficiente para caber dentro da caneca. Os objetos são grandes para caber dentro de variáveis. Variáveis guardam números que localizam um objeto e a localização do objeto é chamada de referência. O Ruby possui apenas objetos então variáveis referenciam outros objetos.
Exemplo:
Neste cenário temos um bebê recém nascido que precisa ser registrado no cartório, para isto vamos criar um objeto bebê e através de um método de outro objeto chamado cartório vamos cadastrar os dados do bebê referenciando o objeto ao nosso bebê, tenha em mente que Ruby possui apenas objetos deste modo não possuímos tipos primitivos como outras linguagens de programação e não precisamos definir o tipo de cada objeto quando fazemos uma referencia a uma variável.
Ruby
#!/usr/bin/env ruby # Desenvolvimento Aberto # ClassesReferencia.rb # Define classe bebê class Bebe # Define atributos attr_accessor :codigo, :nome, :peso, :tamanho, :nomepai, :nomemae, :genero end # Define classe cartório class Cartorio # Cria método da classe(estático) # Transfere objetos por referencia def self.registro(codigo, dados, bebeRef ) # Alimenta objeto bebe bebeRef.codigo = codigo bebeRef.nome= dados[0] bebeRef.peso= dados[1] bebeRef.tamanho= dados[2] bebeRef.nomepai= dados[3] bebeRef.nomemae= dados[4] bebeRef.genero= dados[5] # Imprime registro puts "Registro:" + String(bebeRef.codigo) puts "nome: " + bebeRef.nome puts "Peso: " + bebeRef.peso + " tamanho: " + bebeRef.tamanho puts "Genero: " + bebeRef.genero puts "Pai: " + bebeRef.nomepai puts "mãe: " + bebeRef.nomemae end end # Cria instância do Bebê bebe = Bebe.new # Preenche ficha do cartório fichaRegistro = ["Samanta Amaral", "2.8kg", "36cm", "Roberto Amaral", "Marcia Amaral","Feminino" ] # Registra bebê # Passa objeto ficha e objeto bebe por referencia Cartorio.registro(123456, fichaRegistro, bebe)