数组 – 扩展数组以检查是否在Swift中排序?
发布时间:2020-12-14 05:52:23 所属栏目:百科 来源:网络整理
导读:我想扩展Array类,以便它可以知道它是否被排序(升序)。我想添加一个名为isSorted的计算属性。我如何声明数组的元素是可比较的? 我目前在Playground中的实现 extension Array { var isSorted: Bool { for i in 1..self.count { if self[i-1] self[i] { retur
我想扩展Array类,以便它可以知道它是否被排序(升序)。我想添加一个名为isSorted的计算属性。我如何声明数组的元素是可比较的?
我目前在Playground中的实现 extension Array { var isSorted: Bool { for i in 1..self.count { if self[i-1] > self[i] { return false } } return true } } // The way I want to get the computed property [1,1,2,3,4,5,6,7,8].isSorted //= true [2,8,8].isSorted //= false 错误找不到’>’的重载它接受提供的参数 当然,我仍然有一个错误,因为Swift不知道如何比较元素。如何在Swift中实现此扩展?还是我在这里做错事?
免费功能的另一种解决方法是做Swift的内置Array.sort和Array.sorted方法,并且要求您将适当的比较器传递给该方法:
extension Array { func isSorted(isOrderedBefore: (T,T) -> Bool) -> Bool { for i in 1..<self.count { if !isOrderedBefore(self[i-1],self[i]) { return false } } return true } } [1,3].isSorted(<) // false [1,10].isSorted(<) // true [3.5,2.1,-5.4].isSorted(>) // true (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |