2017-04-12 10 views
0

현재 저는 회사 지향의 객체 스크립팅 언어 인 객체 오리 엔테이 티드 (Object Orientated)와 다른 언어의 많은 기능을 Groovy로 가져 오는 프로젝트를 진행하고 있습니다. 많은 유사한 특징.Groovy에서 가져오고 사용할 수있는 라이브러리 만들기

코드를 최대한 원본에 가깝게 유지하려면 특정 함수 이름과 매개 변수를 동일하게 유지하려고합니다. 이 문제를 해결하기 위해 가져올 수있는 일련의 라이브러리를 작성하고 싶습니다.

예를 들어 원본 스크립트 언어로 inbuilt 메서드가 있다고 가정하면 이 메서드에 대한 정의를 Groovy 파일에 쓸 수 있으며 필요한 경우 가져올 수 있습니다. 불리다.

Tools.groovy

// filename: Tools.groovy 
public String foo(String bar) { 
    return bar; 
} 

다른 파일에

Main.groovy

// filename: Main.groovy 
import Tools; 

String bat = foo("bar") 

난 당신이 항아리에 클래스 파일을 컴파일 할 수 있습니다 알고 클래스 경로에 넣어, 구현할 필요가있는 많은 메소드는 메타 프로그래밍이 필요하거나 객체와 관련되지 않습니다.

죄송 합니다만 나쁜 질문이거나 불투명합니다. 나는 그것이 가능한지 확실하지 않다.

건배

답변

1

저는 라이브러리를 만들고 필요할 때 재사용 할 수 있어야한다고 생각합니다.

인스턴스를 만들 필요가 없으면 클래스를 만들고 정적 메서드를 추가하면됩니다. 그렇지 않으면 정적 메서드가 아닙니다. 그런 다음 나중에 진행하는 방법을 이미 알고있는 것 같습니다.

예를 들어 설명에 따라 String, List 등의 유틸리티 클래스를 만들 수 있습니다.

그런데 라이브러리를 만들지 않더라도, 그루비로 한 줄을 써서 대부분의 경우에 필요한 것을 얻을 수 있습니다.

+0

정적 표기법 (예 : Foo.bar())과 함께 클래스 표기법을 사용하지 않아도되도록 노력하고 있었지만 최상의 옵션이 될 것으로 보입니다. 하위 클래스를 만들지 않고 String 및 List 등의 라이브러리에서 유틸리티 메서드를 만드는 가장 좋은 방법은 메타 프로그래밍을 사용하는 것입니다. 가져올 수있는 String.metaClass. * 메소드의 라이브러리를 만들 수 있습니까? 건배 – rhysvo