【发布时间】:2012-09-25 04:25:48
【问题描述】:
我今天有一个有趣的情况(简化):
我有一个Adapter 类型的通信对象,带有#send 和#receive 方法。
我的应用程序通过 DRb 与它通信。
所以在我的应用程序中,我有一个DRbObject,比如说foo。
现在,打电话
foo.send(msg, dest)
在DRbObject 上调用#send,而不是Adapter。
最简单的解决方法当然是重命名发送方法。 但是,我希望尽可能靠近我的文档/基础 API。
你怎么看?
我应该重命名 send 方法,还是有一个简洁的(本地)hack 方法?
【问题讨论】:
-
如果
send是DRbObject函数,你为什么会期望它调用Adapter函数? -
请原谅,无论你做什么,都不要覆盖
send方法。或者,如果你有一个好主意,那就去做吧。但是,如果您不这样做,请满足于定义例如。send_something和receive_something. -
@oldergod。启动
Adapter的代码启动了一个 DRb 服务器,因此我的应用程序可以通过将 DRbObject 连接到同一个 uri 来与适配器通信。像这样:segment7.net/projects/ruby/drb/introduction.html -
@Boris,你可能是对的。但是感觉很难看,编程 INTO 语言与 IN 语言:) 我认为在这种情况下最安全的做法是重命名为“send_message”(或“puts”或“transmit”)
-
@SirLenz0rlot:不,不是
puts,请。
标签: ruby overriding send drb