我需要向一个实例发送一个方法,在这个方法中,接收者实例必须将self
与同一个类的另一个实例进行比较,稍后作为参数传递。
更清楚:类Handler
有一个名为define_method (param)
的方法,它为实例inst
定义一个新方法(inst
将是{{1}的参数}}具有类define_method
。因此,从现在起X
能够将自己与另一个inst
实例进行比较,只调用该方法(实例的比较方式现在无关紧要。)
X
我如何实现inst.compare(anotherInst)
知道实例可能是define_changes(inst)
不知道的任何对象?
答案 0 :(得分:0)
不太明白你想做什么,但你可以用这种方式向实例化对象添加方法:
irb(main):135:0> s = 'foobar'
=> "foobar"
irb(main):136:0> s.define_singleton_method(:foobar?) { self == 'foobar' }
=> :foobar?
irb(main):137:0> s.foobar?
=> true
但是你的功能描述听起来有点棘手。也许你需要改变你的方法