/ / wie nutze ich mod: instanz_methode? - Rubin

wie benutzt man mod: instance_method? - Rubin

Ich habe einen kleinen Beispielcode erstellt, um dasselbe zu machen "some string".methods durch die Nutzung instance_method:

instance_method("methods").bind("some string").call

Ich weiß nicht, was der Empfänger von instance_method ist, daher habe ich natürlich undefinierte Methodenfehler

Was ist der richtige Weg, um diese Methode anzuwenden?

Antworten:

2 für die Antwort № 1

instance_method"s Empfänger wird für jeden Kontext, in dem Sie sich befinden, selbstständig. Dies ist wahrscheinlich ein Fehler.

Was Sie (vermutlich) tun möchten, ist der explizite Empfänger. In diesem Fall ist die Klasse, die die Methoden für Strings enthält, die String Klasse.

str   = "some string"
meths = String.instance_method("methods").bind(str)
meths == str.method("methods") # => true
meths.call # => [:<=>, :==, :===, ...etc... ]

Siehst du? "some string" ist eine Instanz von String. Damit String"s Instanzmethoden sind "some string"Methoden.