Dlaczego to nie działa?Dlaczego `wyślij` kończy się niepowodzeniem z ulepszeniem Ruby 2.0?
module StringRefinement
refine String do
def bar
length
end
end
end
using StringRefinement
"abcdefghijklmnopqrstuvwxyz".send(:bar)
#NoMethodError: undefined method 'bar' for "abcdefghijklmnopqrstuvwxyz":String
Czy ktoś może wyjaśnić dlaczego tutaj nie działa send
? I czy istnieje sposób dynamicznego wywoływania metod zdefiniowanych w wyrafinowaniu? Nie mogę znaleźć dobrego, pełnego wyjaśnienia, jak udoskonalenia działają w Ruby 2.0.
Ponieważ jest eksperymentalna? – texasbruce
@oldergod Naprawdę? Właśnie wypróbowałem to ponownie, kopiując i wklejając powyższy kod bezpośrednio do podważenia i otrzymałem dokładnie ten sam błąd. Używam również wersji 2.0.0-p0. Czy na pewno robisz dokładnie to, co napisałem? –
@SeanMackesey masz rację, moje złe. – oldergod