2017-10-09 7 views
1
와 생성자에

지금까지 시도 하나의 매개 변수를 사용하여 콜백이며 작동 한 것 :콜백 여러 매개 변수

class SomeClass (something:Int = 3, val callback: (Int) -> Unit) { 
    fun doSomething() { 
     callback(11) 
    } 
} 

class AnotherClass { 

    val something = SomeClass({onSomething(it)}) 

    protected fun onSomething(num: Int) { 
     // ... 
    } 
} 

을하지만 어떻게 같은 여러 매개 변수를 구현하기 : 그냥

class SomeClass (something:Int = 3, val callback: (Int, String) -> Unit) { 
    fun doSomething() { 
     callback(11, "Yeah") 
    } 
} 

class AnotherClass { 

    val something = SomeClass(/* ...... what goes here???? */) 

    protected fun onSomething(num: Int, str: String) { 
     // ... 
    } 
} 

답변

1

명시 적 매개 변수와 함께 lambda expression syntax을 사용

val something = SomeClass { num, str -> onSomething(num, str) } 

는 램을 통과하는 경우 bda를 마지막 매개 변수로 사용하면 괄호를 생략 할 수 있습니다. 또한

, 예상과 실제 함수 서명이 정확히 일치 할 때 당신이 bound function reference를 사용할 수 있습니다

val something = SomeClass(this::onSomething)