【问题标题】:Fake a type-cast in Ruby?在 Ruby 中伪造类型转换?
【发布时间】:2010-07-14 23:43:37
【问题描述】:

鉴于以下 Ruby 代码,并且我有一个 Klass 实例,我如何在我的 Klass 实例上调用 do_stuff 方法。我想将我的 Klass 实例转换为 Subklass。我知道在 Ruby 中这是不可能的类型转换 - 有没有办法伪造它?

class Klass
  ...
end

class Subklass < Klass
  ...
  def do_stuff
    ...
  end
end

inst = Klass.new
inst.magically_convert_to_subklass_instance # Need help here
inst.do_stuff

【问题讨论】:

    标签: ruby


    【解决方案1】:

    继承不能以这种方式工作。如果您有一个 Klass 实例,则不能以任何方式将其转换为 Subklass。 要共享这样的代码,您最好使用模块来定义 do_stuff 方法,以将模块中的功能附加到 Klass。 即:

    module StuffModule
      def do_stuff
        print "do stuff"
      end
    end
    
    class Klass
    include StuffModule
    end
    
    inst = Klass.new
    inst.do_stuff
    

    【讨论】:

    • 当然,你不能“向上”投射。感谢您的选择。
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2011-07-31
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多