Метод не-Googleable рубина - PullRequest
2 голосов
/ 06 ноября 2011

Очевидно, существует метод ruby, называемый method , и я пока не могу найти какие-либо документы или примеры по нему.Может ли кто-нибудь опубликовать несколько полезных аннотированных примеров?

Ответы [ 5 ]

6 голосов
/ 06 ноября 2011

Документация по этому методу есть в документации ruby ​​api

http://www.ruby -doc.org / ядро-1.9.3 / object.html # метод-я-метод

есть также method_defined? который также может быть полезен, если вам нужен метод сам

http://www.ruby -doc.org / ядро-1.9.3 / Module.html # метод-я-method_defined-3F

3 голосов
/ 06 ноября 2011

Я в основном использовал его для поиска исходного местоположения определенного метода. (пример запускается в irb на ruby-1.9.2-p290)

class Thing
  def foo
  end
end

Thing.new.method(:foo).source_location
=> ["(irb)", 2]

Thing.new.method(:foo).owner
=> Thing 
2 голосов
/ 06 ноября 2011

Это часть Object и задокументирована здесь:

http://www.ruby -doc.org / core-1.9.3 / Object.html # method-i-method

Класс Method задокументирован здесь и дает несколько примеров:

http://www.ruby -doc.org / core-1.9.3 / Method.html

1 голос
/ 06 ноября 2011

Одно из лучших применений объекта связанного метода, возвращаемого Object#method, - для блоков.Возвращаемый результат этого метода может быть преобразован в аргумент блока.Представьте, что у вас есть:

class Converter
  def convert_item(item)
    item.transmorph
  end
end

Тогда вы можете сделать это

c = Converter.new
elements.map(&c.method(:convert_item))

или когда вы находитесь в конвертере

elements.map(&method(:convert_item))

, что ИМО более элегантно, чемявный синтаксис создания блока.Он также поддерживает to_proc, поэтому вы можете сделать это

some_object.callback = my_handler.method(:activate).to_proc

, а затем в some_object вы можете сделать

@callback.call(data)
1 голос
/ 06 ноября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...