标准库函数
apply函数let函数run函数 与with函数also函数takeif函数 集合类
listset数组map
标准库函数 apply函数apply可以看做是一个对象的配置函数,隐式调用,返回配置好的对象
eg
//不使用apply
file:File=new File(“C://daxiong”)
file.setReadable(true)
file.setWriteable(true)
//使用apply
file:File=new File(“C://daxiong”)
file.apply{
setReadable(true)
//隐式调用就是对于对象属性和方法,不用file.set…显示的调用
setWriteable(true)
}
一些对对象属性的更改或者初始化 *** 作,或者对象方法的初始化执行,可以使用apply方法来配置
let函数传对象给lamabda表达式 显示调用,返回表达式最后一行
eg
str=“ssdjkdd”
str.let{it->
//传入对象str,使用属性时显示调用
“hello world $it”
}
该函数主要是用对象的属性,进行计算 *** 作,来得到并且返回某个结果。比较常用
隐式调用,但返回表达式最后一行。
with 和run一样 只是把对象座位参数 例如with(a){}
把对象传给表达式,但是返回原有对象,利用副作用做事,所谓利用副作用做事,就是执行某个计算 *** 作,但不会返回计算结果,返回原有对象(而let是返回计算结果)
takeif函数如果满足条件,返回接受者对象 ,否则 返回null 。 takeunless 和takeif相反
。虽然也可以用if来替代,但是takeif可以在原对象上直接 *** 作,避免了临时变量赋值麻烦。
eg
file:File=new File(“C://daxiong”).takeif{
it.exists()&&it.isReadable()
}
这样file对象如果不为null,那么就是可执行相关 *** 作(这里存在且可读)的。
总而言之,这个函数的 *** 作,就是在对象在执行某些 *** 作之前,先判断这个对象是否符合要求(做一次筛选),从而避免一些异常的抛出。
集合类 list(1)list的创建 : 不可变 listof()
可变 mutablelistof() 和livedata中的mutablelivedata差不多
可变和:不可变可以相互转化 有tolist 和tomutablelist函数
(2)获取元素
1-普通方式 ,和java差不多
2-getorelse(index){返回lamabda表达式最后一行}
用来防止崩溃,应该重视使用
eg
println(list.getOrElse(2) { “越界” })
println(list.getOrElse(3243) { “你越界了” })
3-getornull(index) eg list.getornull(index)?:""
(3)mutator函数
1- list += “” 相当于 add
2- list -="" 相当于remove
3- list.removeif{it.contains("")} lamabda表达式 it指的是单个元素
(4)list集合便利
1- for in eg for(s in list){}
2- foreach eg list.foreach{it}
3- list.foreachIndexed{index,item->
}
(5)解构语法及其过滤
setset 和list比较就是元素唯一,无序。
创建 setof mutablesetof
获取元素 elementAt
安全 *** 作也都有 orelse ornull等等
mutator函数等也都有 。
除了本质特性之外,list有的,set都有。
注意:list和set可以互相转换 达到去重的目的
如果一个list需要去重,就把他转为set 再转为list
数组类型 , list有toarray函数,比较简单。
map创建和其他集合类差不多,分为可变与不可变
与java区别
(1)有to关键字 eg map=mapof(“a"to"aa”)
等于于pair(“a”,“aa”)
(2)获取map值
1-[]
2-getvalue
安全的方法:
3-getorelse
4-getordefalut
(3)map遍历
1- foreach{it}
2-foreach{key,value->
}
(4)添加元素
1- mutator函数等都有 eg map+=(“a” to “dd”)
2- getorput eg map.getorput(key){“aa”}
若key存在 返回值,不存在 赋值aa并返回
https://www.jianshu.com/p/9dd5ddf0133a
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)