類型與 typealias:回調(diào)接口的新寫法)
函數(shù)類型是 Kotlin 里"接口的替代品"——() - Unit比interface Callback { fun onDone() }短得多,而且能享受函數(shù)類型帶來(lái)的語(yǔ)言特性(泛型、型變、空安全、默認(rèn)值)。typealias則解決另一個(gè)痛點(diǎn):(User) - Boolean這類簽名在項(xiàng)目里反復(fù)出現(xiàn),長(zhǎng)且難讀。兩者一起答,正是"用 Kotlin 的語(yǔ)言特性而不是繞著寫"的信號(hào)。先把結(jié)論放在前面:函數(shù)類型FunctionNP1..Pn, R的本質(zhì)是接口——() - Unit對(duì)應(yīng)Function0Unit、(Int) - String對(duì)應(yīng)Function1Int, String,都有invoke方法。所以函數(shù)類型可以做變量、可以傳參、可以返回(函數(shù)類型的字段不帶invoke括號(hào)才是"函數(shù)引用",帶括號(hào)就是調(diào)用)。typealias是純編譯期別名,展開后沒(méi)有任何類型檢查加成——它只改善可讀性,不改變類型系統(tǒng)。這兩條邊界是本篇的核心:函數(shù)類型有語(yǔ)言級(jí)能力,typealias 沒(méi)有。機(jī)制拆解先看函數(shù)類型的實(shí)現(xiàn)。(Int) - St