android - kotlin 中缀不适用于一个参数扩展函数
android - kotlin infix not working on one parameter extension function
看看我有中缀的这个简单的扩展函数:
infix fun View.isValidColor(hexColor: String?): Boolean {
var isValid = true
return hexColor?.let {
try {
Color.parseColor(it)
} catch (e: Throwable) {
isValid = false
}
isValid
} ?: false
}
//notice how i have infix the extension meaning brackets are not needed, hopefully making it easier to read.
现在让我们看看用法和我尝试了什么:
它不是中缀,它跟在 rule for infix 之后:
- 必须是成员函数或扩展函数。
- 它们必须有一个参数。
- 该参数不能接受可变数量的参数并且不能有默认值。
我做错了什么?
更新:
我也试过这个,但它通过显式调用引用 class 来工作:
既然我现在都在使用显式对象,为什么会失败? ivLogo 是一个由 kotlin 合成的 ImageView。
要使 infix 函数起作用,应该在它的左侧放置一个实际的对象实例:
val result = someView isValidColor "#FFFFFF"
看看我有中缀的这个简单的扩展函数:
infix fun View.isValidColor(hexColor: String?): Boolean {
var isValid = true
return hexColor?.let {
try {
Color.parseColor(it)
} catch (e: Throwable) {
isValid = false
}
isValid
} ?: false
}
//notice how i have infix the extension meaning brackets are not needed, hopefully making it easier to read.
现在让我们看看用法和我尝试了什么:
它不是中缀,它跟在 rule for infix 之后:
- 必须是成员函数或扩展函数。
- 它们必须有一个参数。
- 该参数不能接受可变数量的参数并且不能有默认值。
我做错了什么?
更新:
我也试过这个,但它通过显式调用引用 class 来工作:
既然我现在都在使用显式对象,为什么会失败? ivLogo 是一个由 kotlin 合成的 ImageView。
要使 infix 函数起作用,应该在它的左侧放置一个实际的对象实例:
val result = someView isValidColor "#FFFFFF"