2016-11-21 4 views
0

Я хотел бы присвоить массив целочисленных значений соответствующему свойству массива объектов.Как назначить массив int соответствующему свойству массива объектов в Swift?

class MyClass { 
    var propint: Int = 0 
    var propdbl: Double = 0.0 
    var propstr: String = "" 
} // MyClass 

var arrint: [Int]() 
var arrobj: [MyClass]() 

Один из подходов будет циклически массива целых чисел (arrint), и присвоить значение свойству propint соответствующего элемента массива объекта.

Мне интересно, есть ли более эффективное, элегантное решение этой задачи, например. например array.map, и если да, то как это будет выглядеть.

--Sil68

+0

На самом деле 'map',' sort' и 'filter' - это все петли. И они могут сделать код чистым, но в основном хуже производительности из-за кода безопасности. Не уверен, что есть хороший способ подгонять ваш вопрос. – Ryan

ответ

0

Я не уверен в эффективности. Поскольку @Ryan сказал, что все встроенные функциональные методы используют цикл для обработки массива.

Сказав, что вы могли бы сделать что-то вроде этого ...

let updatedObjectArray = zip(arrint, arrobj).map { 
    number, object -> MyClass in 

    object.propint = number 
    return object 
} 

Вы должны быть осторожны, хотя здесь. Используя класс (а не структуру), вы будете непреднамеренно редактировать исходный массив.

В любом случае, это будет застегивать оба массива, перебирать их и затем сопоставлять их с массивом с обновленными объектами.

В качестве побочного примечания: выберите лучшие имена для своих переменных. Даже в вопросах переполнения стека. Использование имен переменных, таких как arrint или arrobj или propint, делает только две вещи. Не трудно ответить на вопросы, потому что автоматически правильное желание изменить их все. И трудно понять, когда читаете. Я знаю, что это свойство и int (это то, что говорит код). Имя должно сказать мне ПОЧЕМУ это свойство и int.

Смежные вопросы