我有以下功能:() - >单位和(单位) - >单位类型有什么区别?
fun <T, U> process(t: T, call: (U) -> Unit, map: (T) -> U) = call(map(t))
fun <T> processEmpty(t: T, call:() -> Unit) = process(t, call, {}) // error
但processEmpty
没有编制。错误消息是Type mismatch: inferred type is() -> kotlin.Unit but (kotlin.Unit) -> kotlin.Unit was expected
。但是,如果我改变这个功能
fun <T> processEmpty2(t: T, call: (Unit) -> Unit) = process(t, call, {}) // OK
那么什么是() -> Unit
和(Unit) -> Unit
类型之间的区别?为什么第一个版本的processEmpty
没有编译?
我发现我认为更好的方法来定义'processEmpty'函数:'fun processEmpty(t:T,call:() - > Unit)= process(t,{call()},{} )' –
netimen
是的,'{call()}'是一个参数(隐含'it')的正确函数,因此它可以作为'(Unit) - > Unit'传递。 – hotkey