Chciałabym wiedzieć, czy mogę zmusić to się stałoRuby Bez ograniczeń Metody: Czy można wymusić powiązanie z instancjami innych klas?
class A
def bomb ; "bomb" ; end
end
class B ; end
bomb = A.instance_method(:bomb)
b = B.new
bomb.bind(b)
obecnie to rzuca TypeError błędzie: Argument wiążą musi być instancją
Uważam to bardzo ograniczające dotyczące tego, co mogę zrobić z tymi niezwiązanymi metodami możliwości są nieco ograniczone. W takich przypadkach (i nie mówię tylko o funkcjach idempotentnych) miałoby to sens, prawda? I błąd wykonania byłby wystarczający, w przypadku, gdybym obsługiwał zmienne z A, które nie są replikowane w B. Naprawdę chciałbym wiedzieć, jak wymusić to wiązanie.
coś ciekawego, że jest możliwa: 'Object.instance_method (: to_s). .bind ("Hello World") nazywamy # =>„# "'. Nie sądzę jednak, że można wymusić wiązanie w twoim przykładzie. –
Tak, dzieje się tak, ponieważ łańcuch String dziedziczy po Object i można powiązać metody klas nadrzędnych z instancjami klasy potomnej. Przykład: klasa A; def t; "A"; koniec ; koniec ; klasa B ChuckE
jeśli 'A' byłby' modułem', to jest to możliwe w ruby 2 –