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)
}
运行结果:

三,例子:构建复杂字符串或集合
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
val list = listOf("鸡蛋", "酸奶", "芹菜")
val result = with(StringBuilder()) {
append("start\n")
list.forEach { append("$it\n") }
append("end")
toString() // 返回拼接后的字符串
}
println(result)
}
运行结果:

四,例子: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)
}
运行结果:

浙公网安备 33010602011771号