【问题标题】:is_a? and dRuby objectsis_a?和 dRuby 对象
【发布时间】:2010-09-16 11:35:32
【问题描述】:

我正在使用 dRuby,基本上我正在调用一个返回对象的远程方法。

在客户端我有这个代码:

handle_error(response) if response.is_a?(Error)

其中 response 是 DRbObject。 (我在使用 dRuby 之前开发了这段代码,如果出现问题,我将返回一个错误对象)。问题是现在

response.is_a?(Error)

返回“false”,因为该对象实际上是一个 DRbObject。 关于如何检查我的应用程序对象的类的任何想法?

谢谢! 罗伯托

【问题讨论】:

    标签: ruby drb druby


    【解决方案1】:

    您不能使用Duck Typing 解决这个问题吗?不是检查对象是否是错误,而是检查对象是否响应调用以获取错误信息。如果是,则根据该信息处理错误,否则处理(非错误)响应。

    【讨论】:

      【解决方案2】:

      虽然我不确定 DRb 如何管理远程对象,但我希望它能够修改 #kind_of?将类层次结构保留在远程对象上,因此您可以这样做:

      response.kind_of?(Error)
      

      如果这不起作用,您可以随时询问它是否响应特定方法并从那里开始

      response.respond_to?(some_method_on_your_errors)
      

      【讨论】:

        猜你喜欢
        • 2018-11-07
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        相关资源
        最近更新 更多