Прежде всего, этот вопрос не о том, «что означает $ 0». В быстром документе я узнал, что $ 0 - как индекс.
Мой вопрос: «Как numbers.sort { $0 > $1 }
может использоваться для реализации функции сортировки». Я искал этот синтаксис numbers.sort { $0 > $1 }
на некоторых других сайтах, например this one. По-видимому, это не текущая версия. Поэтому я до сих пор не могу понять, в чем смысл этого.
print(numbers) //[20, 19, 1, 12]
let sortedNumbers = numbers.sort { $0 > $1 }
print(sortedNumbers) //[20, 19, 12, 1]
Может кто-нибудь объяснить этот простой кусок кода выше для меня? Как этот простой код $0 > $1
реализует функцию сортировки, сортируя числа от большого до малого.
Я знаю, что некоторые об индексе, и это $ 0 выглядит как индекс, но он имеет только $ 0 и $ 1 два индекса. Итак, как его можно использовать в 4 числах? По моим знаниям на C++ раньше, я не могу понять принцип в этом.
Пожалуйста, сделайте свой ответ как конкретным, насколько это возможно. Спасибо!
----------------- Ниже редактируется дополнительная часть -------------------
I не знаю, сможет ли stackoverflow разрешить мне изменить мой вопрос, как это, но эта дополнительная часть слишком длинная, поэтому я не могу добавить ее в комментарий. @pbodsk @Paul Richter
Итак, синтаксис sort() в swift использует быструю сортировку для работы с функцией сортировки?
На самом деле, мой вопрос о «Принцип работы от sort{$0 > $1}
». Я знаю, что вы имеете в виду выше, и я думаю, что это похоже на то, что говорит быстрый документ 2.1, но ваш ответ не то, что я действительно хочу знать. Извините, мое английское выражение не очень хорошо. Позвольте мне попробовать по-другому.
Когда я узнал C++ раньше, всегда есть какие-то документы, чтобы объяснить, что принцип работы функции во или как эта функция (как рода() здесь) работают в фоновом режиме. Sort() здесь нужно сравнить первый и второй обмен. В C++ это похоже на
if numbers[1] < numbers[2]{ //just consider this pseudocode
int k;
k = numbers[1];
numbers[1] = numbers[2];
numbers[2] = k;
}
Мы видим, что этот процесс очевиден. В быстром, это как
numbers.sort({(val1: Int, val2: Int) -> Bool in
return val1 > val2
})
Где его сравнивают? И как это взаимообмена? Может ли return val1 > val2
автоматически сравнивать и менять эти два значения и возвращать их? Только этот синтаксис реализует эти все 3 процесса? Как? Это то, что я действительно хочу знать. Извините снова за мое бедное английское выражение.
Вы смотрите рода стенография синтаксис .. . $ 0 фактически представляет вашу левую переменную, а $ 1 представляет вашу правую переменную. –
Возможный дубликат [Что означает $ 0 в закрытии в Swift?] (Http://stackoverflow.com/questions/27491620/what-does-0-represent-in -closures-in-swift) – Cristik
Это в каждом представлении к Swift. Посмотрите на закрытие, а затем на различные ярлыки для написания закрытий. – gnasher729