Kotlin语法-Day4


一、

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")
    }
}

在这里插入图片描述


二、内置函数总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值