参考资料
[译]有关Kotlin类型别名(typealias)你需要知道的一切_Mikyou的专栏-CSDN博客
typealias
typealias 只能在顶级,而不能在类里面定义
给一个类型命名 Compare
typealias Compare = (num1:Int,num2:Int)->Boolean
然后就可以将ExplainReasonCallback直接作为一个类型使用
typealias Compare = (num1:Int,num2:Int)->Booleanfun min(list:Array<Int>,compare:Compare):Int{if (list.isEmpty())return -1var num = list[0]list.forEach {if (compare(num,it)){num = it}}return num}fun main() {val list = arrayOf(8,6,1,9,2)val minNum = min(list){num1, num2 ->num1 > num2}println(minNum)}
输出结果:1
上边的min方法的代码相当于:
fun min(list:Array<Int>,compare:(num1:Int,num2:Int)->Boolean):Int{...}
Import as
实际上import as 和 typealias基本是一个东西,但是配合理解可以更简单
import android.support.v4.app.NotificationCompat.Builder as NotificationBuilder
注:如果学过Python大概会觉得很亲切了,在类中的应用可以用NotificationBuilder替代android.support.v4.app.NotificationCompat.Builder
- 更有效的用处
import com.example.app.model.Userimport com.example.app.database.User as DatabaseUser
当导入的两个类同名时,写代码时候往往很难区分,这时候就很好用了。
当然我们也可以改成:
import com.example.app.model.Usertypealias DatabaseUser = com.example.app.database.User
什么时候只能用import as或是另一个

