本文簡要介紹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 UnboundMethod.original_name用法及代碼示例
- Ruby UnboundMethod.bind用法及代碼示例
- Ruby UnboundMethod.parameters用法及代碼示例
- Ruby UnboundMethod.inspect用法及代碼示例
- Ruby UnboundMethod.to_s用法及代碼示例
- Ruby UnboundMethod.owner用法及代碼示例
- Ruby UnboundMethod.clone用法及代碼示例
- Ruby UnboundMethod.arity用法及代碼示例
- Ruby UndefinedConversionError.source_encoding用法及代碼示例
- Ruby UncaughtThrowError類用法及代碼示例
- Ruby UnwindDetails.all_requirements用法及代碼示例
- Ruby UnwindDetails.reversed_requirement_tree_index用法及代碼示例
- Ruby UncaughtThrowError.new用法及代碼示例
- Ruby UnwindDetails.unwinding_to_primary_requirement?用法及代碼示例
- Ruby UnpackCommand.get_path用法及代碼示例
- Ruby UnwindDetails.sub_dependencies_to_avoid用法及代碼示例
- Ruby UndefinedConversionError.error_char用法及代碼示例
- Ruby URI.parse用法及代碼示例
- Ruby UID.change_privilege用法及代碼示例
- Ruby Util.unescape用法及代碼示例
- Ruby Util.url_encode用法及代碼示例
- Ruby UNIXSocket.new用法及代碼示例
- Ruby UNIXSocket.addr用法及代碼示例
- Ruby URI模塊用法及代碼示例
- Ruby UNIXServer.accept用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 UnboundMethod類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。