Kotlin 基础提升二
仅供于作为学习笔记,希望也能够给大家带来帮助,如果存在错误也请大家指正。
1.标准函数
apply
apply 函数中的代码块this 指向为调用者,并返回该调用者
val file = File("E://i have a dream_copy.txt")
file.setReadable(true)
file.setWritable(true)
file.setExecutable(false)
val file2 = File("E://i have a dream_copy.txt")
file2.apply {
setReadable(true)
setWritable(true)
setExecutable(false)
}
let
let 函数 能够使某个变量作用于lamda 表达式,让it 关键字能引用,并会返回表达式的最后一行给接收者
//求集合第一个元素的平方
val first = listOf(3, 2, 1).first().let {
it * it
}
println(first)
run
run 函数和apply 类似,只是放回结果返回的是最后一行
fun main() {
"The people's republic of China。"
.run (::isLong)
.run(::showMessage)
.run(::println)
}
fun isLong(name:String) = name.length >= 10
fun showMessage(isLong: Boolean) = if (isLong) {
"Name is too long."
}else{
"Please rename."
}
with
with 函数和 run函数类似,只是with 函数需要把值作为参数传递
"The people's republic ofChina".run {
length >= 10
}
with("The people's republic ofChina"){
length >= 10
}
also
also 和 let 函数功能类似,只是also对象返回的是调用者对象
var fileContents : List<String>
val also:File = File("E://i have a dream.txt")
.also { print(it.name) }
.also { fileContents = it.readLines() }
println(fileContents)
takeIf
takeIf 和其他标准函数不同,takeIf 先判断Lambda 提供的条件表达式,给出true 或者 false,结果为true 则返回调用者对象,如果为false则返回null
val text = File("E://i have a dream.txt")
.takeIf { it.exists() && it.canRead() }
?.readText()
println(text)
takeUnIf
与takeIf 相反,takeIf 先判断Lambda 提供的条件表达式,给出true 或者 false,结果为true 则返回null,如果为false则返回调用者对象