2013-07-04 2 views
3

암시 적 매개 변수를 제외한 모든 매개 변수를 생략 할 수 있습니까? 내가 명명 된 매개 변수와 함께 시도 :일부 암시 적 매개 변수가 제외됩니다.

def foo(implicit a: Int, b: String) { 
    if (a > 0) { 
    println(b) 
    foo(a = a-1) // error 
    } 
} 

불행하게도, 컴파일러와 foo의 재귀 호출을 거부 :

당신이 달성하기 위해 노력하고 있지만 이런 일이 무엇을 할 수 있는지
not enough arguments for method foo 
Unspecified value parameter b 

답변

1

일부 암시 적 매개 변수를 생략 할 수 없습니다. 따라서 귀하의 예에서

def foo(implicit a: Int, b: String): Unit = ??? 

a만을 지정할 수 없습니다. 그러나 예를

b 암시를 사용할 수없는 경우, "---"가 사용됩니다
def foo(implicit a: Int, b: String = "---"): Unit = ??? 

를 들어, 암시 적 매개 변수의 디폴트 값을 지정할 수 있습니다.

implicit 키워드는 매개 변수 목록 등의 암시가 아닌 그 하나의 매개 변수 같은 암시를 표시 것을 기억하십시오.

1

확실하지 :

def foo(implicit a: Int, b: String): Unit = { 
    def helper(a: Int)(implicit b: String): Unit = 
    if (a > 0) { 
     println(b) 
     helper(a - 1) 
    } 
    helper(a) 
} 
+0

영리한! 당신 사이의 60,000 이상의 대표로, 당신은 모차르트를 듣는 것처럼 나도 영리하게 느끼게합니다. –

+1

@ som-snytt http://i.imgur.com/CdoHhUc.jpg –

+0

@LuigiPlinge 사실, 당신의 영리한 카레가 저를 무언가 시도하고 싶었습니다. 진심으로 감사드립니다. 내 솔루션이 대단히 영리하지 않다는 것에 반대 할 수도 있지만, 모차르트는 그의 음악을 듣는 모든 아기가 바보가된다는 불평을합니까? –

관련 문제