我想有這樣的事情:如何只允許一個類訪問另一個類的方法?
class A
def only_B_can_call_me
'called_by_B'
end
end
class B
def do_stuff(a)
a.only_B_can_call_me
end
end
class C
def do_stuff(a)
a.only_B_can_call_me # how to forbid it?
end
end
B.new.do_stuff(A.new) # => 'called_by_B'
C.new.do_stuff(A.new) # => it should not be allowed!!! but how to do it?
的一種方式做到這一點是讓only_B_can_call_me
的私有方法和使用a.send(:only_B_can_call_me)
B. OK裏面,它的工作原理。但是我可能會在C裏面做同樣的事情......所以,我認爲這不是一個好方法。有沒有其他方法可以做到這一點? (允許一個方法只是通過一個特定的類的實例來訪問。)
(我知道,最終總是能夠從使用send
任何地點訪問任何方法,但我想從send
讓自己走在這種情況下。 )
哪個是您的實際Ruby版本? –
我目前在紅寶石2.4.1 – Djunzu
那麼,我希望我的解決方案能夠幫助你,我很樂意提供幫助。我試過了,它的工作原理https://repl.it/Mmt5/6你可以在那裏看到 –