Kotlin有条件复制



我在Kotlin中有数据类:

data class Foo(a: String, ...)

只有在满足某些条件的情况下,我才想复制a

类似于:

foo.copy( a = if(sth){ "baz" } else { this.a } )

但是我不能在复制函数中引用CCD_ 2对象本身。

data class Foo(var a: String)

您不能在复制函数中直接使用具有自引用的调用。你可以使用类似的作用域函数来实现它。

val foo1 = Foo("Hello")
var foo1Copy = with(foo1) {
copy(a = if (this.a =="Hello") "Hello Again" else "Not Hello" )
}
println(foo1) //Foo(a=Hello)
println(foo1Copy) // Foo(a=Hello Again)

val foo2 = Foo("Hi")
var foo2Copy = with(foo2) {
copy(a = if (this.a =="Hello") "Hello Again" else "Not Hello" )
}
println(foo2) //Foo(a=Hi)
println(foo2Copy) //Foo(a=Not Hello)

游乐场链接

希望能有所帮助。

最新更新