Приведённый updateScreen уже смещает каждую сущность на единицу по X. Создайте три Entity с отдельными экземплярами Point и вызовите обновление для списка.
Обновление координат объектов вдоль оси X
Приведённый updateScreen уже смещает каждую сущность на единицу по X. Создайте три Entity с отдельными экземплярами Point и вызовите обновление для списка.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо создать простой движок, который будет обновлять состояние трёх сущностей. Каждая сущность представлена точкой с координатами (x, y). При вызове функции update() все сущности смещаются на единицу вправо вдоль оси X. Начальные координаты задаются при создании объектов.
data class Point(var x: Int, var y: Int)
class Entity(var position: Point) {
fun update() {
position.x += 1
}
}
fun updateScreen(entities: List<Entity>) {
for (entity in entities) {
entity.update()
}
}
Ответ
Приведённый updateScreen уже смещает каждую сущность на единицу по X. Создайте три Entity с отдельными экземплярами Point и вызовите обновление для списка.
val entities = listOf(
Entity(Point(0, 2)),
Entity(Point(5, 7)),
Entity(Point(-1, 0))
)
updateScreen(entities)
println(entities.map { it.position })
Получатся Point(x=1, y=2), Point(x=6, y=7), Point(x=0, y=0). Если несколько сущностей разделяют один изменяемый Point, он будет увеличен несколько раз за проход. Это нежелательная общая ссылка, если по условию сущности должны иметь независимые координаты.