它不仅供给了异常彻底的表达式,还供给了主动类型转换,是以你可以在不须要额外的转换的情况下应用 Response 实例。
你能想象一下,如不雅没有一个 sealed 的功能,或者根本没有 Kotlin ,它可能看起来是那么的丑恶和复杂?如不雅你忘记了 Java 说话的一些特点,请再次应用 IntelliJ IDEA Kotlin Bytecode ,但要坐下来应用 - 这可能会让你晕倒。
- Triple(enum1, enum2, enum3) == enum1 to enum2 to enum3
- public final void sugar(@NotNull Response response) {
- Intrinsics.checkParameterIsNotNull(response, "response");
- String var3;
- if (response instanceof Success) {
- var3 = ((Success)response).getBody();
- System.out.println(var3);
- } else if (response instanceof Error) {
- var3 = "" + ((Error)response).getCode() + ' ' + ((Error)response).getMessage();
- System.out.println(var3);
- } else {
- if (!Intrinsics.areEqual(response, Timeout.INSTANCE)) {
- throw new NoWhenBranchMatchedException();
- }
- var3 = response.getClass().getSimpleName();
- System.out.println(var3);
- }
- }
总结一下,我很高兴在这种情况下应用 sealed 关键字,因为它让我以类似于 Swift 的方法塑造我的 Kotlin 代码。
因为你已经看到了 when()在 sealed 类中的用法,我决定再分享更多强大年夜的功能。 想象一下,你必须实现一个接收两个 enums 并产生一个弗成变状况的函数。
- enum class Employee {
- DEV_LEAD,
- SENIOR_ENGINEER,
- REGULAR_ENGINEER,
- JUNIOR_ENGINEER
- }
- enum class Contract {
- PROBATION,
- PERMANENT,
- CONTRACTOR,
- }
- fun access(employee: Employee,
- contract: Contract): SafariBookAccess
应用 when()函数来分列
如今是时刻定义 SafariBooksAccess 构造体了,因为你已懂得 sealed 关键字,这是应用它最合适的机会。封装 SafariBookAccess 并不是必须的,但它是封装不合情景下的 SafariBookAccess 的不合状况的好方法。
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 登录网站时必须输入的图片验证码可以用来辨认拜访者到底是人照样机械——这同时也是某种程度上的「图灵测试」,人工智能>>>详细阅读
本文标题:6个能让你的Kotlin代码库更有意思的“魔法糖”
地址:http://www.17bianji.com/lsqh/39802.html
1/2 1