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

运行结果:

image

三,例子

代码:

        //处理按钮点击事件
        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")
        }

运行结果:

image

四,例子:

代码:

        //处理按钮点击事件
        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]
        }

运行结果:

image

 

posted @ 2025-08-16 10:14  刘宏缔的架构森林  阅读(39)  评论(0)    收藏  举报