将方法附加到ruby中受限上下文中的另一个类
有可能在有限的区域内将我自己的方法附加到另一个类上吗 如果是这样的话,有谁能给我展示一个更好的实践,或者它应该使用类似于将方法附加到ruby中受限上下文中的另一个类,ruby,class,Ruby,Class,有可能在有限的区域内将我自己的方法附加到另一个类上吗 如果是这样的话,有谁能给我展示一个更好的实践,或者它应该使用类似于deligate的方法来实现这一点 情况是这样的:在接收、生成和传递类B实例的类A中, 我想在那些bs上附加一些方法,而不让这些新方法在类A之外可以访问。这些方法被调用。您可以向任何对象添加方法,只影响该实例,而不影响创建该实例的整个类 some_object = Whatever.new other_object = Whatever.new class <<
deligate
的方法来实现这一点
情况是这样的:在接收、生成和传递类B实例的类A中,
我想在那些b
s上附加一些方法,而不让这些新方法在类A之外可以访问。这些方法被调用。您可以向任何对象添加方法,只影响该实例,而不影响创建该实例的整个类
some_object = Whatever.new
other_object = Whatever.new
class << some_object
def another_method
...
end
end
some_object.another_method # works
other_object.another_method # error: no such method another_method
还有
instance\u eval
,但你明白了;) 您可以在类B中编写一个私有方法,该方法将对象a作为参数,并使用实例变量\u get
、实例变量\u set
和发送
来访问对象中的任何数据。不过这很难看。谢谢。但单凭这一点仍然无法隐藏这些方法,使其不被外部调用。在将b
s传递出去之前,对undef
执行这些方法似乎很乏味,但却是可能的。
some_object.define_singleton_method(:foo) do |arg1, arg2|
puts "Called with #{arg1} and #{arg2}"
end
some_object.foo(7, 8)