kotlin-高阶函数之自定义DSL入门
DSL:领域特定语言
可以根绝自己的需求自定义扩展语言,比如我们想给某个类型的List增加一个我们自定义的方法,就可以通过下面的方式写
data class PeopleBean(var name: String, var age: Int)
var peopleList = listOf<PeopleBean>(
PeopleBean("李丽", 41),
PeopleBean("王红", 38),
PeopleBean("张靓颖", 17),
PeopleBean("陈乔恩", 27),
PeopleBean("宋祖儿", 26),
PeopleBean("赵雅芝", 29),
PeopleBean("刘涛", 18),
PeopleBean("刘亦菲", 23)
)
//方法名 查找年龄大的女人 传的参数为age, 特别注意方法名前带的点 .
fun List<PeopleBean>.查找年龄大的女人(age: Int) {
//filter是一个传入匿名函数染回集合 的函数
filter {
it.age > age
}.forEach(::println)
}
正式调用
peopleList.查找年龄大的女人(32)
var list2 = listOf<PeopleBean>()
list2.查找年龄大的女人(12)
如果前面加上infix,infix:中缀表达式,如果使用infix调用方法时,前面不需要用点 .
比如
//这个方法前面加上infix后,调用查找年龄大的女人 这个方法就直接用空格就可以
infix fun List<PeopleBean>.查找年龄大的女人(age: Int) {
filter {
it.age > age
}.forEach(::println)
}
//正式调用,省去点 . ,直接用空格就好了
peopleList 查找年龄大的女人(32)
浙公网安备 33010602011771号