作家
登录

6个能让你的Kotlin代码库更有意思的“魔法糖”

作者: 来源: 2017-12-15 11:57:03 阅读 我要评论

"Access blocked for $contract."
  •         } 
  •         JUNIOR_ENGINEER -> when (contract) { 
  •             PROBATION -> NotGranted(AssertionError("Access not allowed on probation contract.")) 
  •             PERMANENT -> Blocked("Access blocked for $contract."
  •             CONTRACTOR -> Blocked("Access blocked for $contract."
  •         } 
  •         else -> throw AssertionError() 
  •     } 
  • 这个代码很完美,但你能让它更像 Kotlin 吗?当你天天对同事的 PR/MR 进行审查时会有什么建议吗?你可能会写一些如许的评论:

    • 太多 when() 函数。应用 Pair 来避免嵌套。
    • 改变列举参数的次序,定义 Pair() 对象来让它更易读。
    • 归并反复的 return。
    • 改为一个表达式函数。
    1. fun access(contract: Contract, 
    2.            employee: Employee) = when (Pair(contract, employee)) { 
    3.     Pair(PROBATION, SENIOR_ENGINEER), 
    4.     Pair(PROBATION, REGULAR_ENGINEER), 
    5.     Pair(PROBATION, JUNIOR_ENGINEER) -> NotGranted(AssertionError("Access not allowed on probation contract.")) 
    6.     Pair(PERMANENT, SENIOR_ENGINEER), 
    7.     Pair(PERMANENT, REGULAR_ENGINEER), 
    8.     Pair(PERMANENT, JUNIOR_ENGINEER), 
    9.     Pair(CONTRACTOR, SENIOR_ENGINEER) -> Granted(DateTime(1)) 
    10.     Pair(CONTRACTOR, REGULAR_ENGINEER), 
    11.     Pair(CONTRACTOR, JUNIOR_ENGINEER) -> Blocked("Access for junior contractors is blocked."
    12.     else -> throw AssertionError("Unsupported case of $employee and $contract"

    如今它看起来更整洁,但 Kotlin 还有语法糖可以完全省略对 Pair 的定义。棒!

    这个构造让我的生活变得轻松,也让 Kotlin 代码读写变得轻易,我欲望你也认为这很有效。但它是不是不克不及用于三元组呢?谜底是肯定的。

    以上就是第 1 部分的全部内容,如不雅你仍然很有兴趣,请持续浏览第 2 部分。干杯!

    【编辑推荐】

    1. Kotlin 一统世界?Kotlin/Native 支撑 iOS 和 Web 开辟
    2. Kotlin和Java法度榜样员福利:轻量级Web框架Javalin
    3. Kotlin 很受 Java 开辟人员的迎接
    4. Kotlin VS Java – 编程说话之间的对决
    5. 2017年12月编程说话排名:Kotlin和C说话成为“年度编程说话”候选人”
    【义务编辑:未丽燕 TEL:(010)68476606】

      推荐阅读

      仅需15分钟,使用OpenCV+Keras轻松破解验证码

    开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 登录网站时必须输入的图片验证码可以用来辨认拜访者到底是人照样机械——这同时也是某种程度上的「图灵测试」,人工智能>>>详细阅读


    本文标题:6个能让你的Kotlin代码库更有意思的“魔法糖”

    地址:http://www.17bianji.com/lsqh/39802.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)