我可以将完整的变量发送到另一个模块吗?

时间:2014-09-25 00:46:40

标签: ruby

只是想知道这样的事情是否可能:

module A
    def sender
        varA = 'foobz'
        B.public_send('receiver', varA)
    end
end
module B
    def receiver
        puts varA #=> 'foobz'
    end
end

我在这里尝试将模块A 中定义的 varA 发送到模块B ,原封不动。完整的我的意思是我们没有把它放在哈希或任何东西中,我们在 B.receiver 中使 varA 成为流行的。

1 个答案:

答案 0 :(得分:1)

你必须做这样的事情:

module A
  def self.sender
    varA = 'foobz'
    B.public_send('receiver', varA)
  end
end

module B
  def self.receiver(varA)
    puts varA #=> 'foobz'
  end
end

A.sender #=> foobz

您已定义实例方法,但模块没有实例。此外,您需要传递varA作为参数。

或许这就是你的想法:

module A
  def self.sender
    B.instance_variable_set(:@varA, 'foobz')
    B.public_send('receiver') 
  end
end

module B
  def self.receiver
    puts @varA #=> 'foobz'
  end
end

A.sender #=> foobz