【编程语言】Kotlin之扩展函数
简介:
平时Android开发中会使用各种各样的工具类函数,大部分工具类都是对原有对象的一种扩展,例如:
public static void startActivity(Activity act, Class clz){
Intent intent = new Intent(act, clz);
act.startActivity(intent);
}
对于这种形式,Kotlin给与我们提供更加方便的调用形式,不需要在调用的时候传入操作对象(例如上面代码的Activity类型函数形参),这就是扩展函数。
举个简单的例子:对于上面的工具类,在Kotlin中可以这样调用:act.startActivity(NewActivity.class),为了实现这种方便的调用,需要在Kotlin中做一些必要的工作。
fun Any.funcName(): String {}
inline Any.funcName(): String {}
fun Any.funcName() = this.apply {}
上面是扩展函数的一般格式,例如我们现在用Kotlin扩展函数重新为上面的工具类写一份Kotlin版本的:
fun Activity.startActivity(Class clz) {
Intent intent = new Intent(this, clz);
this.startActivity(intent);
}
现在我们对Activity类扩展了一个新方法:startActivity(Class clz),任何时候我们都可以调用Activity实例的startActivity()方法。
注意:
1.别忘记Kotlin的扩展函数实质就是工具类,任何使用的时候,你都需要import这个扩展函数。
【编程语言】Kotlin之扩展函数的更多相关文章
- 谷歌钦定的编程语言Kotlin大揭秘
第一时间关注程序猿(媛)身边的故事 谷歌钦定的编程语言Kotlin大揭秘 语法+高级特性+实现原理:移动开发者升职加薪宝典! 谷歌作为世界级的科技公司巨头,强悍的技术研发与创新能力使其一直是业界的楷模 ...
- Kotlin的扩展函数:扩展Android框架(KAD 08)
作者:Antonio Leiva 时间:Jan 11, 2017 原文链接:https://antonioleiva.com/extension-functions-kotlin/ 扩展函数是Kotl ...
- 使用Kotlin开发Android应用(III):扩展函数和默认值
通过前面两篇文章,我们学习了Kotlin的基本知识,并知道如何配置工程,本文将接着介绍Java没有的而Kotlin实现了的有趣的特性.记住当你对Kotlin语言有任何疑问时,请参考官方指南.该指南组织 ...
- Kotlin 语言高级安卓开发入门
过去一年,使用 Kotlin 来为安卓开发的人越来越多.即使那些现在还没有使用这个语言的开发者,也会对这个语言的精髓产生共鸣,它给现在 Java 开发增加了简单并且强大的范式.Jake Wharton ...
- kotlin使用手记
几个月前接触过scala,当时下载一个库用maven引入,弄了很久,后来觉得没起一个项目有点重量级,一次偶然机会在升级idea的时候,发现jetbrains官网出了一门新的jvm编程语言kotlin, ...
- 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅
本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发( ...
- Kotlin in Action 笔记
Kotlin 参考 官网 reference kotlin实战 Try Kotlin Kotlin China Github 简介 Kotlin是一门把Java平台作为目标的新的编程语言.它简洁.安全 ...
- 你还在把Java当成Android官方开发语言吗?Kotlin了解一下!
导语:2017年Google IO大会宣布使用Kotlin作为Android的官方开发语言,相比较与典型的面相对象的JAVA语言,Kotlin作为一种新式的函数式编程语言,也有人称之为Android平 ...
- Kotlin入门(21)活动页面的跳转处理
Activity的活动页面跳转是App最常用的功能之一,在前几章的demo源码中便多次见到了,常常是点击界面上的某个按钮,然后跳转到与之对应的下一个页面.对于App开发者来说,该功能的实现非常普通,使 ...
随机推荐
- Linux基础-04-权限
1. 查看文件的权限 1) 使用ls –l命令查看文件上所设定的权限. -rw-r--r-- 1 root root 605 Mar 18 20:28 .jp1.tar.gz 权限信息 属主 属组 文 ...
- 2、C语言实现通讯录
main函数入口: //test.c #include<stdio.h> #include<stdlib.h> #include<string.h> #includ ...
- ArcGIS Server Identify结果属性 AliasName
最近做地图服务相关工作,一般在数据库中,字段名有好多限制,而实际工作中,需要显示的经常有一些较长的字段或者包含单位等特殊符号. 为了方便属性的操作,将属性字段名改为英文,AliasName中保存了属性 ...
- Linux下磁盘分区,格式化以及挂载
测试环境:VMware Workstation / centos7 1.磁盘分区 (1)易于管理和使用: 比如说我们把磁盘分了sda1.sda2.sda3.sda4盘,我们假设sda1盘为系统盘,其他 ...
- 服务篇:我的第一WebService应用
一.我的第一个Webservice应用 1.新建一个空项目 2.添加新项,加入asmx,并再浏览器浏览 3.添加一个aspx网页 4.右键引用→添加服务引用→高级→添加Web引用,输入再浏览器浏览的a ...
- module 'cv2' has no attribute 'KNearest_create'
python版本:3.6.5 opencv版本:3.2.0 使用的是jupyter notebook 源代码如下: import cv2 import numpy as np import matpl ...
- javascript -- 时间转换
function numFormat(num){ //时间处理 return ('00' + num).substr(-2); #处理 日期前面有0的情况}function timeFormat ...
- iOS - 处理通话或录音状态中界面错乱的重布局
iphone设备在通话或录音状态中,状态栏下移了20个像素,这时controller的view的frame的高度就减少了20个像素,所以我们需要根据view的frame去布局子view.但是是,当状态 ...
- HTML中的图片标签的用法!
在HTML中<img>这个标签是定义文本中的图片标签,它的作用就比如说可以提供图片的名字.提供图片的尺寸大小和提供图片的一些图片属性,比如Alt这个属性,可以给图片一个名称来告诉朋友们.这 ...
- 转载 AI-Talking 图算法
https://mp.weixin.qq.com/s/2XRgJr-ydxHA3JxAZ_5HeA 图算法在风控业务的实践 直播行业中有很多业务风控问题,比如说批量注册.刷热度.垃圾信息以及薅羊毛等. ...