Как получить метод экземпляра, привязанный к переменной в ruby? - PullRequest
5 голосов
/ 27 мая 2011

Как я могу получить экземпляр метода в переменной?Например:

class Foo
  def bar
    puts "bar"
  end
end

Я хочу иметь возможность манипулировать методом экземпляра "bar" (например, для его передачи).Как я могу это сделать?

Я знаю, что могу получить константу класса с помощью

foo_class = Kernel.const_get("Foo")

Могу ли я сделать что-нибудь подобное, чтобы получить Foo#bar?

Ответы [ 3 ]

7 голосов
/ 27 мая 2011

Кажется, вам нужен UnboundMethod :

class Foo
  def initialize(value)
    @value = value
  end

  def bar
    @value
  end
end   

unbound_bar = Foo.instance_method(:bar)
p unbound_bar.bind(Foo.new("hello")).call
#=> "hello"
0 голосов
/ 27 мая 2011

См. Документацию по Ruby для UnboundMethod .

0 голосов
/ 27 мая 2011

method(:bar) в области применения метода. Вы можете назвать это, он все еще связан с self.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...