Kotlin学习笔记四

Kotlin学习笔记四

标准库函数

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”
}
该函数主要是用对象的属性,进行计算操作,来得到并且返回某个结果。比较常用

run函数 与with函数

隐式调用,但返回表达式最后一行。
with 和run一样 只是把对象座位参数 例如with(a){}

also函数

把对象传给表达式,但是返回原有对象,利用副作用做事,所谓利用副作用做事,就是执行某个计算操作,但不会返回计算结果,返回原有对象(而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)解构语法及其过滤

set

set 和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

上一篇:Function.prototype.apply()


下一篇:Eclipse Refresh SVN status cache 卡死 工具崩溃