2014-12-18 25 views
9

Czy jest możliwe dołączenie modułu do instancji w ruby?Czy w ruby ​​można umieścić moduł na obiekt?

tj. W Scali można wykonać następujące czynności.

val obj = new MyClass with MyTrait 

czy można zrobić coś podobnego w rubinie, może coś podobnego do podążania?

obj = Object.new include MyModule 

Odpowiedz

13

Tak, można:

obj = Object.new 
obj.extend MyModule 
2

Tak, patrz Object#extend. Wszystkie obiekty mają metodę extend, która pobiera listę modułów jako swoje argumenty. Rozszerzenie obiektu o moduł doda wszystkie metody instancji z modułu jako metody instancji na rozszerzonym obiekcie.

module Noise 
    def cluck 
    p "Cluck cluck!" 
    end 
end 

class Cucco 
end 

anju = Cucco.new 
anju.extend Noise 
anju.cluck 

==> "Cluck cluck!"