2014-04-21 8 views
0

이것은 일반적인 코드 구성 질문의 역할을합니다.코드 완성의 모형 네임 스페이스와 R- 또는 R 코드 구성 방법

현재 "네임 스페이스"에 코드를 작성하려고합니다. 그래서 예를 들면, 나는 것 :

Mine.FancyPlot.Plot(...) 
Mine.FancyPlot.Impl.PlotCanvas(...) 
Mine.FancyPlot.Impl.PlotLegend(...) 
Mine.BasicPlot.Plot(...) 
Mine.BasicPlot.Impl.PlotCanvas(...) 
Mine.BasicPlot.Impl.PlotLegend(...) 
Mine.BasicPlot.Impl.PlotLines(...) 

아이디어는 내가 구현 네임 스페이스에 대한 "IMPL"에서 "개인"기능을 멀리 숨기기 위해 노력하고 있다는 점이다. 따라서 Mine_FancyPlot.R 외부에서 나는 Mine.FancyPlot.Impl 함수를 호출하지 않을 것입니다.

이 방법은 코드 완성이 그다지 좋지 않다는 것을 제외하고는 상당히 잘 작동합니다. 나는 내가 Impl 기능을 포함한 모든 기능을 얻고, IP 전에이기 때문에, 그들은 심지어 "대중"사용자 기능을 숨기 Mine.BasicPlot.를 입력하고 TAB을 쳤을 때, 우선

.

그래서 나는이 더 이상 예상되는 "개인"기능에서 더 잘 작동

MyPub.FancyPlot.Plot(...) 
MyPriv.FancyPlot.PlotCanvas(...) 
MyPriv.FancyPlot.PlotLegend(...) 
MyPub.BasicPlot.Plot(...) 
MyPriv.Mine.BasicPlot.PlotCanvas(...) 
MyPriv.Mine.BasicPlot.PlotLegend(...) 
MyPriv.Mine.BasicPlot.PlotLines(...) 

로 구조를 변경하기 시작했다. 그러나 나는 여전히 MyPub.을 입력하고 TAB을 입력하면 실제로는 다른 모든 "네임 스페이스"(예 : Java, C++, ...)와는 달리, 시작하는 함수의 긴 목록을 볼 수 없다는 문제가 있습니다. 모두 첫 번째 "네임 스페이스"에 있습니다. 내가 MyPub.를 입력하고 TAB을 쳤을 때

이상적으로는, 나는 단지 "하위 네임 스페이스"의 목록을 얻을 것이다, 그래서 이상적으로,이를 다음 점에서 모든 예측을 잘라 R에서 코드 완성을 좋아하고 독특한 것 MyPub에서 작동합니다.

이것이 가능합니까? 이 동작을 반영하기 위해 코드 예측을 변경할 수 있습니까? 아니면 내가 원하는 것을 성취 할 수있는 더 좋은 방법이 있습니까?

+1

를 참조하십시오 표시되지 않습니다 기능 사용하는 기능을 패키지에 넣으십시오. 그런 다음 사용자가 액세스 할 수 있도록 원하는 기능을 내보낼 수 있습니다. 함수가 클래스의 멤버 인 경우 .DollarNames를 사용하여 맞춤 완성을 작성할 수 있습니다. See? .DollarNames – jdharrison

+0

s3 클래스 jeres 사용을 고려해 볼 수도 있습니다. 왜냐하면 기본적으로 여러 유형의 객체에서 plot을 호출하는 것처럼 보이기 때문입니다. – Thomas

답변