Vorrei sapere se potevo forzare questo accadaMetodi non utilizzati di Ruby: è possibile forzare il binding alle istanze di altre classi?
class A
def bomb ; "bomb" ; end
end
class B ; end
bomb = A.instance_method(:bomb)
b = B.new
bomb.bind(b)
attualmente getta la TypeError errore: argomento bind deve essere un'istanza di A
Trovo che questo sia molto limitante per quanto riguarda quello che posso fare con questi metodi non associati, le possibilità sono un po 'limitanti. In casi come questi (e non mi riferisco solo alle funzioni idempotenti) avrebbe senso, no? E sarebbe bastato un errore di esecuzione, nel caso in cui dovessi gestire variabili da A che non sono replicate in B. Mi piacerebbe davvero sapere come forzare questo legame.
qualcosa di interessante che è possibile: 'Object.instance_method (: to_s). .bind ("ciao mondo") chiamare # => "# "'. Non credo che sia possibile forzare l'associazione nel tuo esempio. –
Sì, questo perché String eredita da Object ed è possibile associare i metodi di istanza superclass alle istanze di classe child. Un esempio: classe A; def t; "A"; fine ; fine ; classe B ChuckE
se 'A' sarebbe stato un' modulo', quindi è possibile in ruby 2 –