对它的方法调用与?.let主体中的参考值之间有什么区别?
fun setDrawableTintColor(drawable: Drawable?, @ColorInt tintColor: Int) {
drawable?.let {
drawable.mutate()
if (tintColor != COLOR_NO_TINT) {
drawable.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN)
} else {
drawable.clearColorFilter()
}
}
}
还有一个:
fun setDrawableTintColor(drawable: Drawable?, @ColorInt tintColor: Int) {
drawable?.let {
it.mutate()
if (tintColor != COLOR_NO_TINT) {
it.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN)
} else {
it.clearColorFilter()
}
}
}
答案 0 :(得分:0)
两者相同,下面的任何一个都可以使用
(1)
fun setDrawableTintColor(drawable: Drawable?, @ColorInt tintColor: Int) {
drawable?.let {
drawable.mutate()
if (tintColor != COLOR_NO_TINT) {
drawable.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN)
} else {
drawable.clearColorFilter()
}
}
}
(2)
fun setDrawableTintColor(drawable: Drawable?, @ColorInt tintColor: Int) {
drawable?.let {
it.mutate()
if (tintColor != COLOR_NO_TINT) {
it.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN)
} else {
it.clearColorFilter()
}
}
}
(3)
fun setDrawableTintColor(drawable: Drawable?, @ColorInt tintColor: Int) {
drawable?.let { drawableRes ->
drawableRes.mutate()
if (tintColor != COLOR_NO_TINT) {
drawableRes.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN)
} else {
drawableRes.clearColorFilter()
}
}
}
答案 1 :(得分:0)
此Kotlin功能的第一种方法是直接更改对象,第二种方法是更改传递给scope-functions的参数。
使用let函数通常比使用self对象(表示平均值)更好。 编译器在编译代码时理解为该对象的参考。 用另一种方式,在编译代码编译器的第一个运行值时。