V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liusd
V2EX  ›  Kotlin

我与 Kotlin 的爱恨情仇之浅谈 Type aliases

  •  
  •   liusd · 2017-05-24 10:14:43 +08:00 · 4213 次点击
    这是一个创建于 2725 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在上一篇文章 《我与 Kotlin 的爱恨情仇之浅谈 block 》最后, 我提到了 Kotlin 已经引入 Type aliases ,今天就跟大家一起来聊聊吧。

    Type aliases 是什么?

    接受一个新的东西的时候,我们首先都会从字面去猜测它大概是用来做什么的,Type aliases 也不例外。 Type 顾名思义 类型 , aliases 我想大伙也并不会太陌生,意味着 别名, 很多时候我们会在系统的 profile 中加入一些 aliases,方便我们使用命令。二者联合起来就是: 给一个类型起一个别名

    我爱 Type aliases

    • 怎么用?

    使用关键字 typealias,举个例子:

        typealias NodeSet = Set<Network.Node>
    
        typealias Predicate<T> = (T) -> Boolean
    
    • 我写项目的时候已经用到了哪些呢?

    block 闭包更加简洁,增加可复用, 可读性。

    上一篇文中讲解 有趣的 block,总结中提到让人头疼声明冗长,可读性差的问题。举个例子:让你去封装一个网络下载的 API,方法是异步更新状态。

    一个方法还是可以 接受,假如由于需求的变更,需要重载很多方法出来的时候怎么办呢?难道要这样子么?

    WTF,当然是 review 都不能通过的代码,看着新好累,当然在 1.1 之前抛开使用 block 而使用 interface,估计也只能选择无奈的 review 通过代码。但现在不用了的,使用 typealias 完美解决:

    更多例子还是看官方文档吧:《 reference/type-aliases 》

    我 不爱 Type aliases

    只是按照 之前的吐槽方式而已,才有了这一个节点,可以忽略,因为我很爱 Type aliases。如果非要我吐槽的话,只能说来的太迟了把。哈哈哈。

    写在最后

    Type aliases的使用,能够让代码写起来更舒服。但切记不要滥用, 比如文档中提到的 typealias AInner = A.Inner, 用的好的话还好,用的不好的话,别个接手你的代码要去跳转到定义里面才能看到这个 别名到底是干嘛的。但它真是个好利器,赶紧用起来吧。

    原文链接

    5 条回复    2017-05-24 15:51:58 +08:00
    we000
        1
    we000  
       2017-05-24 11:14:32 +08:00
    不要原文转载, 代码别用图片
    Coxxs
        2
    Coxxs  
       2017-05-24 12:21:40 +08:00
    @we000 “ V2EX 不反对文章的原作者自己全文转载自己写的原创文章” https://www.v2ex.com/about
    liusd
        3
    liusd  
    OP
       2017-05-24 12:36:47 +08:00 via iPhone
    @Coxxs 谢谢支持 代码觉得截图看着更好,否则手机上排版可能显示的不太好。
    NovemberEleven
        4
    NovemberEleven  
       2017-05-24 13:26:37 +08:00
    不就是 c/c++的 typedef ?
    liusd
        5
    liusd  
    OP
       2017-05-24 15:51:58 +08:00
    @NovemberEleven 对的 哈哈哈 我在上一个帖子最后就提到 了的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:56 · PVG 00:56 · LAX 08:56 · JFK 11:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.