내부에 많은 클래스가있는 모듈을 가진 Ruby 라이브러리를 작성 중입니다. 초기화 자이 호출/볼 수 있도록 이러한 클래스의 대부분은 스크립트를 호출하여 유용하고 수정해야하지만, 나는 (의 일부)를하지 않으 :Ruby 라이브러리 작성하기 - 모듈 외부에서 메소드 숨기기
module MyLib
class Control
def initialize
# They can use this
end
def do_stuff
Helper.new('things')
end
end
class Helper
# Shouldn't be visible
def initialize(what)
@what = what
end
def shout
@what
end
end
end
c = MyLib::Control.new
h = c.do_stuff
p h.shout
# => "things"
#^All of this is desired
# v This is undesirable
p MyLib::Helper.new('!')
# => <MyLib::Helper @what='!'>
그 다음 나는 또한 좋겠, 간단한 일이 있다면 생성 된 RDoc도 Helper
클래스의 .new
메소드를 포함하지 않아도됩니다. 어떤 아이디어?
읽어 주셔서 감사합니다.
불행히도 이것은 고장났습니다. Helper가 현재 제어 상태이므로 구문 오류가 발생합니다. 그러나'p MyLib :: Control :: Helper.new ('!')'는 개인용에도 불구하고 작동합니다. –
@Matthew : 네 말이 맞아. 그건 내 멍청한 실수 였어. 나는 그런 벙어리 오류의 희생자가 아닌 다른 해결 방법을 작성했지만 여전히 문제를 해결합니다. –