kotlin: takeif/takeunless函数
一,功能
takeIf 函数 的 返回值 由其 Lambda 表达式参数的返回值 确定 ,
Lambda 表达式 返回 true , 则 返回 接收者对象 ;
Lambda 表达式 返回 false , 则 返回 null 空值 ;
takeUnless 函数 的 返回值 由其 Lambda 表达式参数的返回值 确定 ,
Lambda 表达式 返回 false , 则 返回 接收者对象 ;
Lambda 表达式 返回 true , 则 返回 null 空值 ;
takeif: 传入一个你希望的一个条件,如果对象符合你的条件则返回自身,反之,则返回null。
takeunless:传入一个你希望的一个条件,如果对象符合你的条件则返回null,反之,则返回自身。
二,例子
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
val str1 = "hello".takeIf {
it.contains("o")
}?.capitalize()
println(str1)
val str2 = "hello".takeIf {
it.contains("w")
}?.capitalize()
println(str2)
val str3 = "hello".takeUnless {
it.contains("o")
}?.capitalize()
println(str3)
val str4 = "hello".takeUnless {
it.contains("w")
}?.capitalize()
println(str4)
}
运行结果:

三,例子
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
val str = "kotlin"
val result1 = str.takeIf {
it.startsWith("ko")
}
println("result1 = $result1")
val result2 = str.takeUnless {
it.startsWith("ko")
}
println("result = $result2")
}
运行结果:
![]()
四,例子:
代码:
//处理按钮点击事件
binding.button3.setOnClickListener {
val mList = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
//如果符合返回它
val mNewList5 = mList.takeIf {
it.size == 10 //true
}
println(mNewList5)
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
val mNewList51 = mList.takeIf {
it.size == 5 //false
}
println(mNewList51)
//null
//如果不符合返回它
val mNewList6 = mList.takeUnless {
it.size == 10 //true
}
println(mNewList6)
//null
val mNewList61 = mList.takeUnless {
it.size == 5 //false
}
println(mNewList61)
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
}
运行结果:

浙公网安备 33010602011771号