當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。