Я пытаюсь написать расширение для MutableCollection
, которое должно использовать метод sort(by:)
для сортировки, однако оно не доступно для MutableCollection
расширений, несмотря на то, что этот метод был определен для MutableCollection
(по крайней мере в соответствии с документацией Apple для разработчиков).
Вот очень надуманный и упрощенный пример:
struct MyType { var priority:Int }
extension MutableCollection where Element == MyType {
mutating func sort() { self.sort(by: { $0.priority > $1.priority }) }
}
Но это приводит к ошибке Argument passed to call that takes no arguments
, потому что мойsort()
метод рассматривается в этот момент, кажется, что вообще ничего не известно о sort(by:)
.
Если я изменю расширение на вместо Array
, тогда расширение работает просто отлично, нотогда, конечно, он зависит от типа, а не применяется ко всем типам, соответствующим MutableCollection
, что я и имел в виду (чтобы быть как можно более универсальным).
Почему я не могупосмотрите и используйте метод sort(by:)
на этом этапе, и есть ли способ, которым я могу обойти это?