【问题标题】:Ruby class associationsRuby 类关联
【发布时间】:2011-07-18 00:15:38
【问题描述】:

我在 Ruby 中创建类关联时遇到了麻烦,因为它是一种动态类型语言。在Java中,我是这样写的:

public class Foo {
   ...
}

public class Bar {
   public Foo foo;
   ...
}

如何在 Ruby 中编写类似的东西?

【问题讨论】:

    标签: ruby oop associations


    【解决方案1】:
    class Foo
    
    end
    
    class Bar
    
      attr_accessor :foo
    
      def initialize (foo)
        @foo = foo
      end
    
    end
    
    foo = Foo.new
    bar = Bar.new(foo)
    
    puts bar.foo
    

    对于你所说的,似乎你需要某种类型安全。您可以通过这样做来实现类似的目标

    def initialize (foo)
      raise ArgumentError, "You must provide a valid Foo instance" unless foo.instace_of?(Foo)
      @foo = foo
    end
    

    【讨论】:

    • 我不太清楚。我想将现有的 Foo 对象传递给 Bar。
    • 我相信你想在构造函数中传递它?已编辑
    • 是的,没错。我已经考虑过这个解决方案,但对我来说似乎很危险,因为我可以通过构造函数传递错误的变量。我想这是动态打字的代价。无论如何,谢谢!
    • 那里。我编辑了答案以提供一些类型安全性。无论如何,在 ruby​​ 中最好不要关心类型,只需查看对象是否可以使用 respond_to? 响应消息
    • 未来的你好。这会让我得到 foo.bars 吗?还是只是 Bar.foo?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2011-04-21
    • 2015-12-06
    • 2013-10-10
    相关资源
    最近更新 更多