Нет никаких "мутирующих" и "не мутирующих" массивов. Проблема в том, что вы, скорее всего, создаете коллекцию ReversedCollection и вам нужен массив. Вы можете создать это, создав массив из коллекции:
let array = self.doSomething(Array(Array<UInt8>([10, 29, 33]).reversed()))
Обратите внимание, что метод reversed()
здесь не reverse()
. reverse()
возвращает Void (который вы можете принять за «мутирующий массив»).
Если вы имеете в виду «Я хочу изменить массив на месте, а затем передать его чему-то другому», то есть два действия и требуется два утверждения. Хотя возможно обойтись с дополнительными функциями, в этом нет особого смысла. reversed()
- это O (1), а Array.init(collection)
- это O (N), так что все это O (N), что совпадает с Array.reversed
. Если существует проблема выделения памяти, добавьте дополнительную строку. Очень сложно передавать массивы в изменяющиеся функции и быть абсолютно уверенными, что копии не будут сделаны (Swift не дает никаких обещаний относительно предотвращения копирования).
Обычно я бы переписал doSomething
здесь, чтобы принять коллекцию а не массив.