Ruby:如何从绑定方法获取示例

s4n0splo  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(147)

在Ruby中,我可以将一个方法绑定到一个接收器(示例):

class TEST
  def meth
  end
end
bound_method = TEST.new.method(:meth)

问题:如何从绑定方法中取回接收器?

可能解决方案,可在以下文档中找到:

/*
 *  call-seq:
 *     binding.receiver    -> object
 *
 *  Returns the bound receiver of the binding object.
 */
static VALUE
bind_receiver(VALUE bindval)
{
    const rb_binding_t *bind;
    GetBindingPtr(bindval, bind);
    return vm_block_self(&bind->block);
}
yizd12fk

yizd12fk1#

如何从绑定方法中取回接收器?
如果你看一下the documentation of Method,你会发现Method#receiver方法,它返回Method对象的绑定接收器:


返回方法对象的绑定接收器。

(1..3).method(:map).receiver # => 1..3

相关问题