2012-12-04 2 views
1

의 결합을 주장 오류그루비 키워드 인수

def foo(a,b,c='awesome',d=null) { 
    assert d 
} 

foo(1,2,d='bar') 

가 왜 오류를 줄 않습니다 생산합니다 다음 코드? 키워드 할당이 작동하지 않는 이유는 무엇입니까? 파이썬 키워드 인수와 매우 다른 점을 발견했습니다.

답변

3

Groovy는 키워드 인수를 python과 완전히 동일하게 취급하지 않습니다.

먼저 구문은 맵과 유사합니다. 대신

foo(1,2,d='bar') 

당신이

foo(1,2,d:'bar') 

둘째가 필요 그루비 이름으로 키워드 인수를 매핑 할 수 없습니다. 그루비에서 이러한 목표를 달성하기위한 방법은 맵으로 키워드 인수를 허용하는 것입니다 :이 여기에 얼마나 멋있는 핸들에

def foo(Map kwargs, a, b, c='awesome') { [a,b,c,kwargs.d] } 
assert foo(1,2,d:'bar') == [1,2,'awesome','bar'] 

자세한 내용 : http://groovy.codehaus.org/Extended+Guide+to+Method+Signatures.

관련 문제