kotlin 学习之扩展函数

记得以前写swift的时候有扩展这么一个方式,就是可以通过写extension来给类扩展新的方法,在今天看kotlin扩展方法的部分,两种实现其实差不多。这里不对swift的扩展细说,具体写法可以自己参照网上的很多例子,下面我们来看kotlin的扩展和使用。

fun String.lastChar(): Char {
    return get(length - 1)
}

可以看到代码中使用了String.这样的写法,后边跟了一个我们想要的方法名称,再后边是我们的返回类型。那么get方法是String中自有的方法,还有length方法也是String自有方法,这里的使用省略了this关键字。原始写法如下

fun String.lastChar(): Char {
    return this.get(this.length - 1)
}

就这样我们定义了一个扩展方法,使用方式就是直接导入定义这个扩展的包里的类,就可以使用,例如

"Hello World".lastChar() //这个时候我们就会或得最后一个字符 'd'

我们扩展这个方法是有问题的,就是没有判断要处理的String长度为0,就是为空字符串的时候的情况。正确处理如下

fun String.lastChar(): Char? {
    if (length > 0) {
       return get(length - 1)
    }
    return null
}

这样在外部使用的时候需要判断返回值是不是null了。

其他扩展也是类似,对于特殊的情况要做特殊处理,不要留下未知可能出现的问题。不然很有可能会给调用扩展方法的人带来很大的坑。

3
说点什么

avatar
2 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
星辰皓月 Recent comment authors
  Subscribe  
最新 最旧 得票最多
提醒