Прототип
В data классах котлина есть готовый механизм позволяющий реализовать создание копии объекта. Но подобного поведения можно добиться и в обычном классе. Достаточно передать в качестве параметров по умолчанию поля самого объекта (а что, так можно было?). Код приведен ниже
class Person(
var name: String,
var score: Int,
var email: String,
) {
fun copy(
name: String = this.name,
score: Int = this.score,
email: String = this.email
) = Person(name, score, email)
}
@RestController
class MyController {
@GetMapping
fun createClone(@ModelAttribute person: Person) = listOf(
person.copy(),
person.copy(name = "Another name"),
person.copy(score = 1000)
)
}
Результат:
[
{
"name": "Name",
"score": 0,
"email": "email@address.com"
},
{
"name": "Another name",
"score": 0,
"email": "email@address.com"
},
{
"name": "Name",
"score": 1000,
"email": "email@address.com"
}
]
А где лапки? Ампутировали?
почему не питон?
Потому что котлин лучше чем питон
То есть ты написала идентичную функцию в классе для создания класса, но в чем универсальность ?
Можно сделать копию, заменив часть полей одним вызовом