Kotlin-37.类型别名(typealias)

官方文档: http://kotlinlang.org/docs/reference/type-aliases.html

类型别名(Type alias)

自kotlin 1.1起,类型别名(Type alias)为现有类型提供替代名称,
如果类型名称太长,可引入较短别名替代原类型名!

1.为集合类型(collection type)提供别名:
    //缩短较长泛型类型(generic type)是很有吸引力的
    typealias NodeSet = Set<Network.Node>
    typealias FileTable<K> = MutableMap<K, MutableList<File>>

2.为函数类型(function type)提供别名(alias):
    typealias MyHandler = (Int, String, Any) -> Unit
    typealias Predicate<T> = (T) -> Boolean

3.为内部类(inner)和嵌套类(nested)创建别名:
    class A {
        inner class Inner
    }
    class B {
        inner class Inner
    }
    typealias AInner = A.Inner
    typealias BInner = B.Inner

提示:
类型别名不会引入新类型,等效于相应底层类型,编译器会把别名翻译为原有类型:
    //添加别名声明typealias Predicate<T>后,Kotlin编译器总是把它扩展为(Int) -> Boolean     
    typealias Predicate<T> = (T) -> Boolean
    fun foo(p: Predicate<Int>) = p(42) 

    fun main(args: Array<String>) {
        //类型别名和原有类型,可以相互替代,因为编译器会把别名翻译为原有类型
        val f: (Int) -> Boolean = { it > 0 }
        println(foo(f)) // 输出 "true"

        val p: Predicate<Int> = { it > 0 }
        println(listOf(1, -2).filter(p)) // 输出 "[1]"
    }

简书:http://www.jianshu.com/p/4968ed493d2d
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/74906383
GitHub博客:http://lioil.win/2017/07/09/Kotlin-typealias.html
Coding博客:http://c.lioil.win/2017/07/09/Kotlin-typealias.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值