>

아래는 스크립트 파이프 라인의 Jenkins 그루비 코드입니다. 메소드를 전달하는 데 사용합니다

def dict = [:]
def register(String x, Closure y){ dict[x]=y }

우리는 register('a', this.&foo) 를 말한다   register() 에 메소드를 전달하기 위해  클로저를 두 번째 인수로 수락

여기서 foo()  방법입니다

def foo(parm){
   // do something with parm
}

여기서 parm 가능한 값은 'a'입니다

<시간>

register 의 두 번째 인수 유형은 무엇입니까?   this.&foo 통과를 피하는 방법  오히려 register('a', foo) 를 호출 ?


  • 답변 # 1

    register('a', foo) 를 호출하려면  그런 다음 foo  예를 들어

    def foo = {
        // closure body here
    }
    
    

    대신

    def foo() {
        // method body here
    }
    
    

    건물 this.&foo  메소드 포인터 연산자라고하며 메소드를 클로저로 변환하는 데 사용됩니다. 만약 foo  방법을 유지해야 this.&foo 를 피할 수 없습니다  운영자. Groovy는 foo 로 메소드 전달을 지원하지 않습니다. . 반면에, 당신의 register  메소드는 클로저를 두 번째 매개 변수로 예상하므로 옵션을 사용해야합니다.

    foo 정의  폐쇄로

    또는 foo 변환   this.&foo 로 클로저하는 방법  연산자

관련 자료

  • 이전 python - cv2transform과 함께 warp_matrix (cv2findTransformECC에서)를 사용하는 방법
  • 다음 grpc-gateway 뒤에있는 파이썬 서비스에서 확인 상태가 아닌 응답 메시지를 보내는 방법은 무엇입니까?