2009-07-08 2 views
3

Groovy로 변환해야하는 Ruby로 작성된 프레임 워크가 있습니다.
코어 루비 이외의 것은 사용하지 않지만 메타 프로그래밍은 많이 사용합니다.Ruby to Groovy

Groovy에서 지원하는 기본 기능은 모두 동일하며 전환이 복잡합니까?

답변

5

크기 나 기능 등에 따라 쉽지 않을 수도 있고, 재 작성으로 번역하는 것이 아닙니다. 재 작성을 생각하고있을 때마다 나는 더 나아 가기 전에 Joel's musings on this을 참조합니다.

왜 이것을 Groovy에서 다시 작성해야합니까? JVM이 필요하다면 (예를 들어, 추가 라이브러리/프레임 워크를 통합하기 위해) JRuby을 보았습니까? 그것은 많은 일과 고통을 줄여 줄 것입니다.

+1

+1 JRuby 아이디어! –

+0

JRuby + Swing에서 이미 시도해 보았지만 훌륭하게 작동했지만 불행히도 최종 언어 결정을 내릴 위치에 없었습니다. –

+0

또한 프레임 워크를 다른 언어로 변환하는 것은 리팩토링으로 간주되어야하며 리팩토링은 단위 테스트를 제안합니다. 테스트를하지 않고 마이그레이션을 시작하지 마십시오. 작동하지 않을 가능성이 높으므로 마이그레이션을 시작하십시오. 좋은 rantabout 여기있다 : http://hamletdarcy.blogspot.com/2009/06/forgotten-refactorings.html –

8

Groovy와 Ruby는 크게 다르지 않지만 메타 프로그래밍 측면이 약간 바뀝니다. 나는 그루비 전문가가 아니라고하지만

, 나는 설명서에 당신에게 (http://groovy.codehaus.org/Dynamic+Groovy를) 몇 가지 포인터를 참조 할 수 있습니다 :

동적 메서드 호출 :

# Ruby 
an_instance.send("method_name") 

// Groovy 
anInstance."$methodName"() 

방법이없는 :

# Ruby 
def method_missing(meth, *args, &blk) 
    # Some code 
end 

// Groovy 
def methodMissing(String name, args) { 
    // Some code 
} 

런타임에 클래스에 메서드 추가 :

# Ruby 
class SomeObject 
    define_method :new_method do 
    # Do something 
    end 
end 

// Groovy 
SomeObject.metaClass.newMethod = {-> 
    // Do something 
}