参考资料
[译]有关Kotlin类型别名(typealias)你需要知道的一切_Mikyou的专栏-CSDN博客
typealias
typealias 只能在顶级,而不能在类里面定义
给一个类型命名 Compare
typealias Compare = (num1:Int,num2:Int)->Boolean
然后就可以将ExplainReasonCallback直接作为一个类型使用
typealias Compare = (num1:Int,num2:Int)->Boolean
fun min(list:Array<Int>,compare:Compare):Int{
if (list.isEmpty())return -1
var 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.User
import com.example.app.database.User as DatabaseUser
当导入的两个类同名时,写代码时候往往很难区分,这时候就很好用了。
当然我们也可以改成:
import com.example.app.model.User
typealias DatabaseUser = com.example.app.database.User