扩展函数
- 写在当前类,当前使用
- 优势: 不用重写类重新定义方法或属性,可以使用该扩展类的所有属性
- 格式:
类A.方法x()
的形式,可以直接在该扩展函数中使用该类中的对象或方法(仅public方法) - 使用: a.x()
fun <T> TextView.setTxt(t: T) {
text = t.toString()
}
使用:tv.setTxt(56)
可以用infix
修饰扩展函数, 可以用空格代替.
(必须含有且只含有一个参数)
扩展属性
给对象自定义一个属性,使用方法同扩展函数
var TextView.leftMargin: Int
get():Int {
return (layoutParams as ViewGroup.MarginLayoutParams).leftMargin
}
set(value) {
(layoutParams as ViewGroup.MarginLayoutParams).leftMargin = value
}
高阶函数
用于集合
maxBy 找到对应条件的最大的一个
minBy 找到对应条件的最小的一个
groupBy 按照对应条件分组, 符合条件的key则为true, 对应的value即分组的结果
filter 按照任意条件过滤
find 找到符合条件的第一个元素
last 符合条件的最后一个元素
removeIf 移除符合条件的元素, 返回true/false表示移除成功与否
map 返回一个list
any 判断某条件是否为真
count 符合某条件的元素的个数
with 修饰变量, 方法体里面可以直接使用该变量可使用的方法
一些其他的高阶函数