文章目录
一、
1.1 apply内置函数
1.apply函数始终返回当前对象本身
2.apply函数 匿名函数持有的是 this 本身
//TODO Kotlin语言中的apply内置函数
fun main() {
val info:String ="Zhangsan Is A Boy"
//普通方式
println("info字符串的长度:${info.length}")
println("info最后一个字符是:${info[info.length-1]}")
println("info全部转换成小写是:${info.toLowerCase()}")
println("")
//apply内置函数的方式
//info.apply特点:apply函数始终返回info本身String类型
var result = info.apply {
//一般大部分情况下,匿名函数,都会持有一个it,但是apply函数不会持有it,但是会有一个this==info本身
println("apply匿名函数里面打印的:$this")
println("info字符串的长度:${this.length}")
println("info最后一个字符是:${this[this.length - 1]}")
println("info全部转换成小写是:${this.toLowerCase()}")
}
println()
println("apply函数返回的数据是:$result")
//真正使用apply函数的写法规则如下:
//info.apply特点:apply函数始终是返回"info本身" 可以链式调用
info.apply {
println("长度:${this.length}")
}.apply {
println("最后一个字符是:${this[this.length - 1]}")
}.apply {
println("换成小写是:${this.toLowerCase()}")
}
}
1.2 let内置函数
1.let函数根据最后一行代码返回类型进行返回
2.let函数 匿名函数里面持有的是it
//TODO Kotlin语言中的let内置函数
fun main() {
//普通方式 对集合第一个元素相加
val list= listOf(6,5,2,3,42,4)
val value1 = list.first()
val result =value1+value1
println(result)
//let方式 对集合第一个元素相加
//let函数返回类型, 根据最后一行的变化而变化
val result1 = list.let {
it.first() + it.first()
}
val result2 = list.let {
true
}
println(result1)
println(result2)
}
1.3 run内置函数
1.run函数根据最后一行代码返回类型进行返回
2.run函数 匿名函数里面持有的是this
//TODO Kotlin语言中的run内置函数
//1.run函数的特点 字符串延时
//2.具名函数判断长度 isLong
//3.具名函数检测合格 showText
//4.具名函数增加一个括号 mapText
//5.具名函数输出内容
fun main() {
val str="ZhangSan is Ok"
//匿名函数
str.run {
if(this.length>5) true else false
}.run {
if(this) "你的字符串合格" else "你的字符串不合格"
}.run {
"[$this]"
}.run {
println(this)
}
//具名函数
str.run(::isLong)
.run(::showText)
.run(::mapText)
.run(::println)
}
fun isLong(str:String) /*:Boolean=*/=if (str.length>5) true else false
fun showText(isLong:Boolean)=if (isLong) "你的字符串合格" else "你的字符串不合格"
fun mapText(showText:String)="[$showText]"
1.4 with内置函数
1.with函数根据最后一行代码返回类型进行返回
2.with函数 匿名函数里面持有的是this
//TODO Kotlin语言中的with内置函数
//with调用与前三个不同
// with(xxx){
//
// }
fun main() {
//具名函数
val str="虎牙刘伟"
val r1 = with(str, ::getStrLen)
val r2 = with(r1, ::getLenInfo)
val r3 = with(r2, ::getInfoMap)
with(r3, ::show1)
println()
//匿名函数
with( with( with( with(str){
length
}){
"你的字符串长度是$this"
}){
"【$this】"
}){
println(this)
}
}
fun getStrLen(str:String)=str.length
fun getLenInfo(len:Int)="你的字符串长度是$len"
fun getInfoMap(info:String)="【$info】"
fun show1(content: String) = println(content)
1.5 also内置函数
1.also函数始终返回当前对象本身
2.also函数 匿名函数持有的是 it
//TODO Kotlin语言中的also内置函数
fun main() {
val str="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
str.also {
println("str的原始数据是:$it")
}.also {
println("str转换成小写的效果是:${it.toLowerCase()}")
}
}
1.6 takeIf takeUnless
PS:
xxx.takeIf { true/false }
true:: 直接返回name本身
false: 直接返回null
xxx.takeUnless {true/false}
false:直接返回name本身
true: 返回null
1.7 List创建与元素获取
//TODO Kotlin语言中的List创建与元素获取
/*
*
* 普通获取方式: 索引
* 防止奔溃取值方式:
*
* getOrNull getOrElse
* */
fun main() {
val list= listOf("zhangsan","lisi","wangwu","maliu")
//普通取值方式: 索引
println(list[0])
println(list[1])
println(list[2])
println(list[3])
//println(list[4]) //越界 ava.lang.ArrayIndexOutOfBoundsException
println()
//用KT代码 一定不会出现崩溃
println(list.getOrElse(3){"越界"})
println(list.getOrElse(5){"越界"})
println()
println(list.getOrNull(1))
println(list.getOrNull(5))
//getOrNull+空合并操作符
println(list.getOrNull(5) ?:"超过最大范围了")
}
1.8 可变List集合
mutableListOf()
//TODO Kotlin语言中的可变集合
fun main() {
//可变集合
val list= mutableListOf<String>("zhangsan","lisi","wangwu","maliu")
list.add("新元素")
list.remove("maliu")
println(list)
//不可变集合 to 可变集合
val list2= listOf(123,456,789)
//不可变的集合无法进行可变操作
// list2.add()
// list2.remove()
val list3:MutableList<Int> = list2.toMutableList()
list3.add(111)
list3.remove(456)
println(list3)
}
1.9 mutator
//TODO Kotlin语言中的mutator
//1.mutator += -= 操作
//2。removeIf
fun main() {
//1.mutator += -= 操作
val list= mutableListOf<String>("Dali","DaDa","DongXi","NanBei")
list+= "李四"
list+= "王五"
list-="DongXi"
println(list)
//2.removeIf
// list.removeIf { true } //如果是true 自动遍历整个可变集合,进行一个元素一个元素的输出
// println(list)
list.removeIf { it.contains("Da") } //过滤所有的元素,只要是有Da的元素
println(list)
}
1.10 List集合遍历
//TODO Kotlin语言中的List集合遍历
fun main() {
val list= listOf(1,2,3,4,5,6)
println(list) //输出list详情 并不是遍历集合
//第一种 遍历方式:
for (i in list) {
print("元素$i ")
}
println()
//第二种 遍历方式
list.forEach{
print("元素:$it")
}
println()
//第三种 遍历方式
list.forEachIndexed{
index,item->
print("下标:$index, 元素:$item")
}
}