当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby UnboundMethod类用法及代码示例


本文简要介绍ruby语言中 UnboundMethod类 的用法。

Ruby 支持两种形式的对象化方法。 Class Method 用于表示与特定对象关联的方法:这些方法对象绑定到该对象。可以使用 Object#method 创建对象的绑定方法对象。

Ruby 还支持未绑定的方法;不与特定对象关联的方法对象。这些可以通过调用 Module#instance_method 或通过在绑定的方法对象上调用 unbind 来创建。这两者的结果都是 UnboundMethod 对象。

未绑定方法只能在绑定到对象后调用。该对象必须是kind_of?方法的原始类。

class Square
  def area
    @side * @side
  end
  def initialize(side)
    @side = side
  end
end

area_un = Square.instance_method(:area)

s = Square.new(12)
area = area_un.bind(s)
area.call   #=> 144

未绑定方法是对该方法在对象化时的引用:对基础类的后续更改不会影响未绑定方法。

class Test
  def test
    :original
  end
end
um = Test.instance_method(:test)
class Test
  def test
    :modified
  end
end
t = Test.new
t.test            #=> :modified
um.bind(t).call   #=> :original

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 UnboundMethod类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。