construtores em ruby
Você ja deve ter percebido que diferente do C#, Java e outras linguagens OO, em Ruby a criação de um novo objeto é feita pelo método new
, mas como é feita a criação de um objeto em Ruby?
Primeiro faremos uma lista do que precisamos para para instanciar um novo objeto.
- Alocar espaço para um objeto vazio
- Setar o estado inicial do objeto
- Retornar a referência para o objeto alocado
Após feita a lista vamos criar um objeto com um construtor personalizado com cada item da lista
class Book
def self.custom_new(title, author)
instance = allocate # Aloca espaço para um novo objeto vazio
instance.custom_initialize(title, author)
instance # Retorna a referência do objeto
end
def custom_initialize(title, author)
@title, @author = title, author
end
end
Book.custom_new('Title','Alessandro')
=> #<Book:0x00000003607978 @author="ale", @title="Title">
No caso acima criamos uma classe Book
que possui um construtor personalizado, claro que poderíamos sobrescrever o método new
e/ou initialize
, mas fiz dessa forma apena para mostrar que é possivel fazer assim.
Caso queira saber sobre o método allocate
aqui está a documentação