2014-09-25 69 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 
相關問題