Kotlin之内置函数-创新互联

在Kotlin中提供了我们方便使用的内置函数,本章主要了解以下

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了施秉免费建站欢迎大家使用!常用内置函数的使用
    • 1、函数特性概况
    • 2、apply 函数
    • 3、also 函数
    • 4、let函数
    • 5、run函数
    • 6、with函数
    • 7、takeIf
    • 8、takeUnless
    • 9、全部代码

1、函数特性概况
  1. apply:返回调用者本身,匿名函数持有this,方便链式调用
  2. also: 返回调用者本身,匿名函数持有it,方便链式调用
  3. let:返回匿名函数最后一行返回值,持有 it
  4. run:返回匿名函数最后一行返回值,持有 this
  5. with:返回匿名函数最后一行返回值,持有 this
  6. takeIf:当匿名函数返回true的时候,就返回调用者本身,否则就返回null
  7. takeUnless:当匿名函数返回false的时候,就返回调用者本身,否则就返回null

如果上面这些特性都很清楚,那基本可以不用往下看了

2、apply 函数

apply函数的特点:返回调用者本身,匿名函数持有this,方便链式调用

val info = "Kotlin Hello World"

    //正确使用apply函数的写法
    //apply特点:apply函数始终是返回 调用者本身,所以可以链式调用
    info.apply {//匿名函数中持有this,this可以省略不写
        println("字符串长度是:${length}")
    }.apply {println("最后一个字符是:${this[length - 1]}")
    }.apply {println("全部转成大写是:${uppercase()}")
    }

输出:

字符串长度是:18
最后一个字符是:d
全部转成大写是:KOTLIN HELLO WORLD
3、also 函数

also函数特点:返回调用者本身,匿名函数持有it,方便链式调用

//正确使用also函数的写法
    //also特点:also函数始终是返回 调用者本身,所以可以链式调用
    info.also {//匿名函数中持有it
        println("字符串长度是:${it.length}")
    }.also {println("最后一个字符是:${it[it.length - 1]}")
    }.also {println("全部转成小写是:${it.lowercase()}")
    }

输出:

字符串长度是:18
最后一个字符是:d
全部转成小写是:kotlin hello world

apply、also用法总结:

  • 相同点:返回值都是调用者本身,都是方便链式调用
  • 不同点:apply持有this而also持有的是it
4、let函数

Let函数特点:返回匿名函数最后一行返回值,持有 it

//正确使用let函数的写法
    //let特点:let函数返回匿名最后一行返回值,内部持有it
    val letReturn = info.let {println("it当前内容是:$it")
        456.5f
        "Hello"
        false
        it.length//最后一行返回长度Int
    }
    println("最终返回结果1=$letReturn")

    val letReturn2 = letReturn.let {println("it当前内容是:$it")
        "当前字符串长度是${it + 88}"//最后一行返回String
    }
    println("最终返回结果2=$letReturn2")

输出:

it当前内容是:Kotlin Hello World
最终返回结果1=18
it当前内容是:18
最终返回结果2=当前字符串长度是106
5、run函数

run函数特点:返回匿名函数最后一行返回值,持有 this

//正确使用run函数的写法
    //run特点:run函数返回匿名最后一行返回值,内部持有this
    val runReturn = info.run {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$runReturn")

    val runReturn2 = runReturn.run {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$runReturn2")
   

输出:

当前内容是:Kotlin Hello World
最终返回结果1=18
当前内容是:18
最终返回结果2=当前字符串长度是106

let、run用法总结:

  • 相同点:返回值都是匿名函数最后一行的返回值
  • 不同点:run持有this而let持有的是it
6、with函数

with函数特点:返回匿名函数最后一行返回值,持有 this

//正确使用with函数的写法
    //with特点:with函数返回匿名最后一行返回值,内部持有this
    val withReturn = with(info) {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$withReturn")

    val withReturn2 = with(withReturn) {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$withReturn2")

输出:

当前内容是:Kotlin Hello World
最终返回结果1=18
当前内容是:18
最终返回结果2=当前字符串长度是106

with、run用法总结:

  • 相同点:返回值都是匿名函数最后一行的返回值,匿名函数中都持有this
  • 不同点:调用方式不同
7、takeIf

takeIf函数特点:当匿名函数返回true的时候,就返回调用者本身,否则就返回null

info.takeIf {false }
info.takeIf {true }
println("takeIf false=${info.takeIf {false }}")
println("takeIf true=${info.takeIf {true }}")

输出:

takeIf false=null
takeIf true=Kotlin Hello World
8、takeUnless

takeUnless函数特点:当匿名函数返回false的时候,就返回调用者本身,否则就返回null

info.takeUnless {false }
 info.takeUnless {true }
 println("takeUnless false=${info.takeUnless {false }}")
 println("takeUnless true=${info.takeUnless {true }}")

输出:

takeUnless false=Kotlin Hello World
takeUnless true=null

takeIf、takeUnless用法总结:
两个函数用法一样,功能正好相反

takeIf、takeUnless一般不单独使用,都是配合空合并符一起使用,如下:

info.takeIf {false }?:"当前信息是null"
9、全部代码
fun main() {val info = "Kotlin Hello World"

    //正确使用apply函数的写法
    //apply特点:apply函数始终是返回 调用者本身,所以可以链式调用
    info.apply {//匿名函数中持有this,this可以省略不写
        println("字符串长度是:${length}")
    }.apply {println("最后一个字符是:${this[length - 1]}")
    }.apply {println("全部转成大写是:${uppercase()}")
    }

    println()

    //正确使用also函数的写法
    //also特点:also函数始终是返回 调用者本身,所以可以链式调用
    info.also {//匿名函数中持有it
        println("字符串长度是:${it.length}")
    }.also {println("最后一个字符是:${it[it.length - 1]}")
    }.also {println("全部转成小写是:${it.lowercase()}")
    }

    println()

    //正确使用let函数的写法
    //let特点:let函数返回匿名最后一行返回值,内部持有it
    val letReturn = info.let {println("it当前内容是:$it")
        456.5f
        "Hello"
        false
        it.length//最后一行返回长度Int
    }
    println("最终返回结果1=$letReturn")

    val letReturn2 = letReturn.let {println("it当前内容是:$it")
        "当前字符串长度是${it + 88}"//最后一行返回String
    }
    println("最终返回结果2=$letReturn2")


    println()
    //正确使用run函数的写法
    //run特点:run函数返回匿名最后一行返回值,内部持有this
    val runReturn = info.run {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$runReturn")

    val runReturn2 = runReturn.run {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$runReturn2")

    println()
    //正确使用with函数的写法
    //with特点:with函数返回匿名最后一行返回值,内部持有this
    val withReturn = with(info) {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$withReturn")

    val withReturn2 = with(withReturn) {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$withReturn2")


    println()
    info.takeIf {false }
    info.takeIf {true }
    println("takeIf false=${info.takeIf {false }}")
    println("takeIf true=${info.takeIf {true }}")

    println()
    info.takeUnless {false }
    info.takeUnless {true }
    println("takeUnless false=${info.takeUnless {false }}")
    println("takeUnless true=${info.takeUnless {true }}")


    println()

    info.takeIf {false }?:"当前信息是null"
    println(info.takeIf {false } ?: "当前信息是null")

}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:Kotlin之内置函数-创新互联
文章源于:http://scjbc.cn/article/depijd.html

其他资讯