• 神秘嘉Bin
    2022-01-07
    更新完之后可能已经被开除了,每天都更新多好

    作者回复: 哈哈,挺住啊

    
    15
  • Paul Shan
    2022-03-15
    扩展本质是静态函数+固定第一个参数,nullable的扩展,就是第一个参数为nullable,这和一个参数是否为空的作用类似,一方面可以接受更广的参数类型,另外一方面在扩展函数内部需要处理为空的情况。这样做是否合适就取决于应用场景了,多数情况还是不要为空为好,代码更简洁,但是在处理网络调用和兼容java的代码等特殊情况下,有的时候不得不处理为空的情况,那就扩展nullable类型。

    作者回复: 很好的答案!推荐大家看看。

    
    8
  • xiaomengjie
    2022-01-07
    1、调用 fun String.lastElement(): Char? {}:只能是不可null的String才能调用 fun String?.lastElement(): Char? {}:可null String和不可null String都能调用 2、实现 fun String.lastElement(): Char? {}:返回值为null,只有length == 0 fun String?.lastElement(): Char? {}:返回值为null,this == null 或者 length == 0

    作者回复: 赞~分析的不错。

    
    6
  • 魏全运
    2022-01-09
    接受者可空的扩展在遇到空对象调用时不会抛异常,并且允许可空对象调用。

    作者回复: 不错~

    
    5
  • 郑峰
    2022-01-18
    Note that extensions can be defined with a nullable receiver type. These extensions can be called on an object variable even if its value is null, and they can check for this == null inside the body. This way, you can call lastElement() in Kotlin without checking for null, as the check happens inside the extension function.

    作者回复: 不错~

    
    3
  • 〆WingChing℡ご
    2022-04-29
    和 Swift语法相比,感觉上kotlin不是很好理解,语法有点怪异,是不是kt基于jvm要适配java的原因啊

    作者回复: Kotlin跟Swift已经非常接近了。哪个好哪个坏,其实更多的是先入为主,看惯了Swift可能会觉得Kotlin有点怪,反之亦然。Kotlin的语法设计,跟它适配JVM其实没太大关系的。

    
    1
  • 尋道
    2022-04-25
    区别就是接收参数是否可以为空,有 ?参数可空,可处理的范围更广

    作者回复: 没错~

    
    1
  • Emmm
    2022-01-07
    hello,大佬,可以给一下枚举类的扩展吗

    作者回复: 枚举类是可以扩展的,但并不一定有广泛的应用场景。 enum class Human { MAN, WOMAN } val Human.count: Int get() = Human.values().size

    共 3 条评论
    1
  • 追梦
    2022-01-07
    写的太好了,急不可待的想看下面的内容,催更,催更~~

    作者回复: 感谢你的鼓励,我们一起加油~

    
    1
  • neo
    2022-03-22
    不为空的接收者类型 = 调用的String不可为null 可为空的接收者类型 = 调用的String可为null

    作者回复: 是的,那么它们各自的使用场景呢?

    
    