kotlin: 使用with

一,用途

with 是 Kotlin 的核心作用域函数之一,‌专注于在对象上下文中批量执行操作并返回计算结果‌,
通过隐式 this 访问对象成员,适用于需集中处理同一对象属性的场景

二,例子:批量操作对象属性

代码:对同一对象执行多个方法或属性设置,替代冗余的重复对象名书写,
注意: 变量自身因为with中代码的运行而变化

定义类:

data class Person(var name: String, var age: Int){}

调用:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            val person = Person("李大国", 25)
            println(person)     //Person(name=李大国, age=25)
            val info = with(person) {
                name = "王富贵"
                age += 1
                "姓名: $name, 年龄: $age"  // 返回最终计算结果
            }
            println(info)    // 输出:姓名: 王富贵, 年龄: 26
            println(person)   //Person(name=王富贵, age=26)
        }

运行结果:

image

三,例子:构建复杂字符串或集合

 代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            val list = listOf("鸡蛋", "酸奶", "芹菜")
            val result = with(StringBuilder()) {
                append("start\n")
                list.forEach { append("$it\n") }
                append("end")
                toString()  // 返回拼接后的字符串
            }
            println(result)
        }

运行结果:

image

四,例子:with直接操作表达式

 代码:

        //处理按钮点击事件
        binding.button3.setOnClickListener {
            val list = listOf("鲜鸡蛋", "二厂酸奶", "种植基地芹菜")
            println("文字的长度:"+list.sumOf { it.length })
            val result = with(listOf("鲜鸡蛋", "二厂酸奶", "种植基地芹菜")) {
                forEach {
                    val txt = it.toString()
                    val len = txt.length
                    println("当前文字:${txt},长度:${len}")
                }

                sumOf { it.length }
            }
            println("文字的长度:"+result)
        }

运行结果:

image

 

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