2013-05-15 3 views
1

I 그것이 반복 형태의 파라미터를 취할 방법은 다음 구문에 사용 가능한 것을 알 :는 기능 대신 "인수로 사용하는 방법 궁금 그러나스칼라 함수

def capitalizeAll(args: String*) = { 
    args.map { args => args.capitalize } 
} 

를 = > args.capitalize는 "

예를 들어 (작동하지 않습니다) :

def func(s: String): String = { s.capitalize } 
def capitalizeAll2(args: String*) = { 
    args.map { func(args) } 
} 

가 어떻게이 일을 할 수

? 건배

답변

3

마법이 없습니다 :

def func(s: String): String = { s.capitalize } 
def capitalizeAll2(args: String*) = { 
    args.map { arg => func(arg) } 
} 

여기에 내가 arg 이름을 준 현재 (모든 args 문자열에서) 문자열을 처리합니다. 첫 번째 예제는 섀도 잉 때문에 만 작동합니다 (모든 문자열은 args이고 현재 문자열은 같은 이름으로되어 있습니다. 원래의 그림자입니다).

거의 마법

...

def capitalizeAll3(args: String*) = { 
    args.map(func) 
} 

최근의 예는 인수에 하나의 매개 변수와 함수를 적용하는 구문 설탕을 사용합니다.

+0

아마'args.map (_. capitalize)'를 언급해야 할 것입니다 - 어쩌면 그가 실제로 원하는 것일 수도 있습니다. – scriptin