Вы хотите вызывать sorted(by:)
, который возвращает новый, отсортированный Array
экземпляр, а не sort(by:)
, который выполняет сортировку на месте и, следовательно, изменяет Array
.
extension Array where Element == MyStruct {
func customSort() -> [MyStruct] {
return sorted(by: {$0.field < $1.field})
}
}
Если вы действительно хотите отсортировать Array
на месте, вы должны пометить вашу функцию customSort
как изменяющуюся и изменить сигнатуру функции так, чтобы она возвращала Void
, поскольку новый Array
не создан.
extension Array where Element == MyStruct {
mutating func customSort() {
sort(by: {$0.field < $1.field})
}
}