Kotlin代码进阶二

半腔热情 提交于 2020-02-17 17:45:54

Kotlin函数参数默认值

合并前:

fun toast(string: String) {
    toast(string, Toast.LENGTH_SHORT)
}

fun toast(string: String, duration: Int) {
    Toast.makeText(BaseApplication.currentApplication, string, duration).show()
}

合并后:

@JvmOverloads
fun toast(string: String, duration: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(BaseApplication.currentApplication, string, duration).show()
}

在Kotlin中调用,传一个参数或者两个参数,都可以调用

但是,如果在java代码中只能调用2个参数的方法,调用一个参数的方法报错,所以要加一个注解 @JvmOverloads

 

Kotlin扩展函数

原函数:

fun dp2px(dp: Float): Float {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics)
}

改为扩展函数:

//扩展函数,相当于在不改变源码的情况下,给Float添加一个新函数dp2px
//调用:6f.dp2px()
fun Float.dp2px(): Float {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this, displayMetrics)
}

内联函数:inline

fun main() {
    //编译的时候,就是相当于把代码复制过来,可以通过代码转换看出来

    //Log.e("zhoujian","Android开发")
    //Log.e("zhoujian","Kotlin学习")

    logMessage()
}

//内联函数 inline
//作用:减少一层调用栈
//劣势:打包代码量变多
//内联函数 inline对于传入类型是函数参数就有意义的
inline fun logMessage() {
    Log.e("zhoujian", "Android开发")
    Log.e("zhoujian", "Kotlin学习")

}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!