Вы получаете список только с объектом, потому что функция listOf(crs)
возвращает список всех объектов, которые передаются в качестве параметров. Сказав то же самое в Java
, вы делаете что-то вроде этого:
for (course: Courses) {
Course course = new Course(...);
List<Course> list = new ArrayList<>();
list.add(course);
return list;
}
Как вы можете видеть, он создал новый список с одним объектом на одну итерацию.
То, чего вы пытаетесь достичь, можно сделать с помощью оператора map{...}
, который просто преобразует каждый объект в исходном списке с помощью кода, переданного внутрь map
, и возвращает список преобразованных объектов
course.map{ Courses(...) }
Также я заметил, что вы используете оператор !!
при создании объекта Courses
. Возможно, потому что Course
может иметь имя nullable
, а Courses
- нет. Я считаю это плохой практикой, потому что в этом случае вы говорите
Пожалуйста, добавьте Exception
, если имя null
.
Я думаю, что гораздо лучший подход - предоставить альтернативу, например:
val name = course.name ?: "default"
, сказав
Пожалуйста, используйте name
или "default"
, если name
равно null
.
или пропустить объекты без имени, или любой другой подход, подходящий для вашей ситуации.