发送类似对象作为参数的实例的方法?

时间:2017-10-29 02:25:31

标签: ruby metaprogramming

我需要向一个实例发送一个方法,在这个方法中,接收者实例必须将self与同一个类的另一个实例进行比较,稍后作为参数传递。

更清楚:类Handler有一个名为define_method (param)的方法,它为实例inst定义一个新方法(inst将是{{1}的参数}}具有类define_method。因此,从现在起X能够将自己与另一个inst实例进行比较,只调用该方法(实例的比较方式现在无关紧要。)

X

我如何实现inst.compare(anotherInst) 知道实例可能是define_changes(inst)不知道的任何对象?

1 个答案:

答案 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

但是你的功能描述听起来有点棘手。也许你需要改变你的方法