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学习")
}
来源:CSDN
作者:蓝枫amy
链接:https://blog.csdn.net/u014005316/article/details/104358397