在同一模块中的Ruby类之间共享变量

时间:2014-06-20 21:44:52

标签: ruby

我有模块

# File 1.rb

module Search
  class A
    attr_accessor :results

    def find_results
      self.results = [somethings]
    end

    def do_something_with_results
      b = B.new.do_something
      b.response #=> something
      c = C.new.use_b_response_do_something
      return c.did_something
    end

  end
end


# File 2.rb

module Search
  class B

  end
  class C
  end
end

我的模块Search包含类A, B, C A类做了某些事情并带回了需要与B类和C类共享的数据,以便对该数据做一些事情(改进它,在某处发送它,返回true或false)。

如何在课程之间共享此信息?我一直这样做,我认为这是错误的

def do_something
   b = B.new.doing_something
   c = C.new.something_else(b.some_attr)
end

效率不高

1 个答案:

答案 0 :(得分:0)

我的代码中没有任何问题。你似乎在做应该做的事情。使用方法获取和传递数据。

使代码更好的一件事就是将b传递给c。

def do_something
    b = B.new.doing_something
    c = C.new(b).something_else
end

但这取决于你的用例...