我在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)
游乐场链接
希望能有所帮助。