Kotlin之内置函数-创新互联
在Kotlin中提供了我们方便使用的内置函数,本章主要了解以下
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了施秉免费建站欢迎大家使用!常用内置函数的使用- 1、函数特性概况
- 2、apply 函数
- 3、also 函数
- 4、let函数
- 5、run函数
- 6、with函数
- 7、takeIf
- 8、takeUnless
- 9、全部代码
- apply:返回调用者本身,匿名函数持有this,方便链式调用
- also: 返回调用者本身,匿名函数持有it,方便链式调用
- let:返回匿名函数最后一行返回值,持有 it
- run:返回匿名函数最后一行返回值,持有 this
- with:返回匿名函数最后一行返回值,持有 this
- takeIf:当匿名函数返回true的时候,就返回调用者本身,否则就返回null
- 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
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
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
- 不同点:调用方式不同
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、takeUnlesstakeUnless函数特点:当匿名函数返回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