只是想知道这样的事情是否可能:
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 成为流行的。
答案 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