Warum funktioniert das nicht?Warum schlägt `send` mit der Verfeinerung von Ruby 2.0 fehl?
module StringRefinement
refine String do
def bar
length
end
end
end
using StringRefinement
"abcdefghijklmnopqrstuvwxyz".send(:bar)
#NoMethodError: undefined method 'bar' for "abcdefghijklmnopqrstuvwxyz":String
Kann jemand erklären, warum send
hier nicht funktioniert? Und gibt es eine Möglichkeit, Methoden, die in einer Verfeinerung definiert sind, dynamisch aufzurufen? Ich kann keine gute, vollständige Erklärung dafür finden, wie Verfeinerungen in Ruby 2.0 funktionieren.
Weil es experimentell ist? – texasbruce
@oldergod Wirklich? Ich habe es gerade noch einmal versucht, indem ich den oben genannten Code direkt in den HTML-Code kopiert und eingefügt habe und den exakt gleichen Fehler erhalten habe. Ich benutze auch 2.0.0-p0. Bist du sicher, dass du genau das machst, was ich gepostet habe? –
@SeanMackesey du hast recht, mein schlechtes. – oldergod