2014-09-25 66 views
0

只是想知道,如果这样的事情是可能的:我可以发送一个完整的变量到另一个模块吗?

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

在这里,我想送,这是在模块A定义,以模块B,完整。通过完整我的意思是我们不是把它放在哈希或任何东西,我们使varA弹出存在B.receiver

+0

目前还不清楚是什么你正在尝试做的。 – sawa 2014-09-25 01:05:16

+0

如果通过“弹出存在”你的意思是[传值](http://stackoverflow.com/questions/1872110/is-ruby-pass-by-reference-or-by-value)那么是的,它将。 – 2014-09-25 06:56:29

回答

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 
相关问题