白话kotlinKotlin编程禅与计算机程序设计艺术

白话kotlin:有意思的拓展

2017-06-20  本文已影响273人  linheimx

什么是拓展?

一个类是由方法和字段组成的,现在我要给这个类加个方法或者字段,这就是拓展。

拓展的好处:
我是一个普通的人,只有手脚,只能走路。现在给我拓展一下吧:安装一双翅膀,
ok,那我这下牛逼了,我会飞了。

同一个道理,在代码中,将现有的类增强一下,这个类将获得额外的功能,变得牛逼起来了。

如何加呢?

以上方式都可以实现增强现有类的功能,但是都有不少的缺点:编码麻烦,入侵现有的代码。
在kotlin中可以很方便的进行拓展,如下:

拓展方法(函数):

将一个类,添加一个方法

类名.方法名

例子:

拓展:



调用:


拓展属性

将一个类,添加一个属性

类名.属性

例子:

拓展:



调用:


关于拓展的奇思妙想

场景1
我们常常会在应用程序中,弹出个toast,来提示用户。
我们在activity里面这样写:

Toast.makeText(this, "hello", Toast.LENGTH_SHORT).show()

我们只关注弹出的信息,这样写,最简单:

toast("hello")

ok,给activity写一个拓展函数就可以啦:

fun Activity.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

我们常见的toast,各种dialog什么的,我们以前的java代码都能实现,
但是我们写了太多的繁琐代码,
我们可以通过拓展函数,将这些代码模板化,
变成一个简单的方法,拓展至activity或者fragment中,极大的简化了开发的姿势,嘿嘿。

场景2
我们常用imageview加载图片,同样少不了一堆模板代码,
尝试用下拓展方法:

 fun ImageView.load(url: String) {
        Glide.with(context).load(url).into(this)
 }

这样直接调用imgeview.load()方法,岂不是非常直观简单?

白话kotlin系列

  1. 白话kotlin:向空指针异常说再见
  2. 白话kotlin:lambda表达式和高阶函数是什么玩意?
  3. 白话kotlin:内联函数助你提升运行效率
  4. 白话kotlin:用协程来愉快的处理异步问题
  5. 白话kotlin:有意思的拓展
  6. 白话kotlin:简单的理解 关键词object
上一篇下一篇

猜你喜欢

热点阅读