2011-03-09 4 views
20

나는 이것이 무엇을 의미하는지 알고알몸 별표 (*) : 데프 F (*)

def f(*args) 
    ... 
end 

그러나이 무슨 뜻 왜 당신이 그것을 사용하고자하는 것이 무엇? 명명 된 매개 변수로도 나타날 수 있습니까?

def f(*) 
    ... 
end 

답변

35

def f(*) 그것이 globbed 인수 어레이의 이름이없는 것을 제외 def f(*args)와 동일한 효과를 갖는다. 함수가 원하는 수의 인수를 수락하지만 실제로 함수 내에서 함수를 참조 할 필요가없는 경우 (예 : 메소드를 대체하지만 명시적인 인수 목록을 전달하지 않고 super을 호출하는 경우) 사용할 수 있습니다. 원래 인수가 super으로 전달됩니다.

def f(a, b, *)도 쓸 수 있습니다.

+0

+1, 감사합니다. 이것에 대한 어떤 인용이나 권위가 있습니까? 그것은 _ 매우 잘 선전 된 것 같습니다 _ (tm). – pilcrow

+1

일반적으로'(* args)'를 사용하기 때문에 잘 알려지지 않았습니다. 그것은 루비 방식입니다. –

+0

@pilcrow : 논쟁은 있지만 사용하지 않으면 약간의 코드 냄새가 날 수 있으므로 잘 알려지지 않을 것입니다. –