2011-06-15 2 views
0

Я сделал небольшой пример кода, чтобы сделать то же самое, как "some string".methods с помощью instance_method:Как использовать mod: instance_method?

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

Я не знаю, что приемник instance_method, поэтому, конечно, я получил неопределенную методы ошибки

Что такое право способ использовать этот метод?

ответ

2

instance_method Получатель будет сам в любом контексте, в котором вы находитесь. Возможно, это ошибка.

Что вы (предположительно) хотите сделать, это дать ему явный приемник. В этом случае класс, который содержит методы для строк, класс String.

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

Вы видите? "some string" - это пример String. Таким образом, методы экземпляра String - это методы "some string".

Смежные вопросы