Я пытаюсь найти Kotlin эквивалент создания массива классов в C ++
class Widget {
public:
int x;
float w;
}
Widget data[100];
Если у тебя есть class Widget
объявлено, вы можете создать массив из 100 Widget
вот так:
val data = Array(100) { Widget() }
Array
Конструктор принимает два аргумента. Первый аргумент — это размер массива, второй — функция инициализации для создания его элементов. В этом примере я просто вызываю конструктор по умолчанию Widget
,
Кроме того, эта функция инициализации получает индекс создаваемого элемента в качестве параметра, если он вам нужен для создания ваших элементов.
Редактировать: @ Miha_x64 сделал несколько хороших замечаний в комментарии выше, поэтому я также включу некоторые из них здесь.
Вы также можете создать массив, не создавая элементов для немедленного добавления в него, используя arrayOfNulls
,
val nullableWidgets = arrayOfNulls<Widget>(100)
Это даст вам Array<Widget?>
вместо Array<Widget>
и инициализировать все элементы массива null
,
Других решений пока нет …