我有以下功能:() - >單位和(單位) - >單位類型有什麼區別?
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