Ruby 自定义 super 初始化

标签 ruby xmlrpcclient

这是我的情况:

  • XMLRPC::Client 有一个代理构造函数,new3,它接受选项的散列。它取出各个值,然后将构造委托(delegate)给默认初始化程序,initialize
  • 我从 XMLRPC::Client 派生。我想要一个 XMLRPC::Client 但具有一些附加功能的类。
  • 我还希望能够使用选项散列实例化此派生 类。这意味着在派生类的初始化程序中,我必须使用 new3 代理构造函数以某种方式实例化 super

我的问题是这是否可能。如果没有,那么解决这个问题的唯一方法是实际上将 XMLRPC::Client.new3 方法中的代码“复制并粘贴”到我的派生类的构造函数中吗?

我问这个的原因只是想看看是否有解决这个问题的方法,因为在 Ruby 社区中有 DRY(不要重复自己)这个反复出现的主题.但当然,如果这是唯一的方法,它不会杀死我。

最佳答案

我只是发布一个答案,通过向您展示 XMLRPC 的代码是如何编写的来补充其他答案

def new3(hash={})

      # convert all keys into lowercase strings
      h = {}
      hash.each { |k,v| h[k.to_s.downcase] = v }

      self.new(h['host'], h['path'], h['port'], h['proxy_host'], h['proxy_port'], h['user'], h['password'],
               h['use_ssl'], h['timeout'])
    end

http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/xmlrpc/rdoc/classes/XMLRPC/Client.html

关于Ruby 自定义 super 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4251160/

相关文章:

ruby - Unix 命令在服务器上有效,但在 ruby​​ ssh session 中无效

ruby - 这是 Ruby 中一组数组的预期行为吗?

ruby - 与输出的混淆来自从 IRB 调用的用户定义的实例方法

python - 如何获取 XMLRPC 服务器的输出(Python 2.7.3)?

c - 如何在我的项目中分发 xmlrpc-c 库?

ruby - 如何在 CoffeeScript 中执行注入(inject)操作?

ruby-on-rails - Rails 子查询总是返回 nil 值

python - Odoo 通过 Web API 插入销售订单

python - 如何包装 xmlrpc 函数调用?

java - 使用 XmlRpcClient 自定义 HTTP header