android - android - kotlin 中缀不适用于一个参数扩展功能
问题描述
看看我有中缀的这个简单的扩展函数:
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.
现在让我们看看用法和我尝试过的内容:
它不是中缀,它遵循中缀规则:
- 必须是成员函数或扩展函数。
- 它们必须有一个参数。
- 参数不能接受可变数量的参数,并且不能有默认值。
我究竟做错了什么 ?
因为现在我使用显式对象为什么它失败了?ivLogo 是从 kotlin 合成的 ImageView。
解决方案
为了使中缀函数起作用,应该在它的左边放置一个对象的实际实例:
val result = someView isValidColor "#FFFFFF"
推荐阅读
- php - 如何将 daterangepicker 的值传递到另一个 php 页面
- julia - Julia 包“没有已知版本!” 尝试添加包时
- c# - Blazor - Windows 身份验证
- java - 检测用户何时在特定位置
- opencv - 可以在没有物体尺寸的情况下计算物体到相机之间的距离吗?
- optimization - 优化:递归计算根文件夹下大量文件的MD5哈希
- javascript - 将猫鼬数据发送到 ejs 文件时,数据作为 [object, object] 发送
- c++ - 在函数指针内转换 shellcode
- amazon-web-services - 从 AWS 上托管的 Jupyter 笔记本访问非公共 RDS?
- loops - 从结构片段中删除具有重复字段值的结构