gpt4 book ai didi

swift - 为什么排序(按 :) unavailable in extensions to MutableCollection?

转载 作者:搜寻专家 更新时间:2023-11-01 06:13:17 26 4
gpt4 key购买 nike

我正在尝试为 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:)目前的方法,有什么方法可以解决这个问题吗?

最佳答案

文档有点误导。为了就地排序,该集合还必须是 RandomAccessCollection:

struct MyType { var priority:Int }
extension MutableCollection where Self: RandomAccessCollection, Element == MyType {
mutating func sort() { self.sort(by: { $0.priority > $1.priority }) }
}

关于swift - 为什么排序(按 :) unavailable in extensions to MutableCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50585823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com