草庐IT

comparator

全部标签

Java中compare方法

compare方法是在Java8中引入的,它是在Comparator接口中定义的静态方法。compare方法接受两个参数,并返回一个整数值来表示两个对象的比较结果。比较结果为负数表示第一个对象小于第二个对象,比较结果为零表示两个对象相等,比较结果为正数表示第一个对象大于第二个对象。这个方法通常用于对对象进行自定义的比较操作,可以根据自己的需求实现不同的比较逻辑。使用compare方法的示例:importjava.util.Comparator;publicclassMain{publicstaticvoidmain(String[]args){ComparatorInteger>compara

Swift:使用计算的结构属性实现 Comparable

我正在尝试在结构Pitch上实现可比性,它具有一个名为value的计算属性。计算属性被标记为“mutatingget”,因为它需要修改此实例属性。但是当我尝试扩展以使结构具有可比性时,我在返回行旁边收到一条错误消息:不能对不可变值使用可变getter:“lhs”是一个“let”常量extensionPitch:Comparable{publicstaticfuncBool{returnlhs.value知道如何解决这个问题吗? 最佳答案 主要是因为Mutating是改变对象内部变量的值。lhs&rhs//Areparameter.参

swift - 为什么 Comparable 协议(protocol)没有 Equatable 的默认实现?

为什么swift没有像这样的内置实现EquatableforComparable协议(protocol)?extensionComparable{staticfunc==(lhs:Self,rhs:Self)->Bool{return!(lhs 最佳答案 我在评论中找到了答案谢谢大家:假设a是假的,b那么a==b是假的,对于像Float.nan这样的特殊情况是不正确的根据文档:ANaNcomparesnotequal,notgreaterthan,andnotlessthaneveryvalue,includingitself.Pa

swift - 为什么在具有 Comparable 约束的泛型函数中会丢失泛型类型信息?

当创建一个没有约束的普通泛型函数时,它会按预期工作,即:funcselect(x:T,f:(T)->U)->U{returnf(x)}类型流入闭包参数,在那里它允许我将它作为强类型访问,即:varb1:Bool=select("ABC"){$0.hasPrefix("A")}varb2:Bool=select(10){$0>0}当我添加一个Equatable约束时它继续工作:funcselectEquatable(x:T,f:(T)->U)->U{returnf(x)}varb3:Bool=selectEquatable("ABC"){$0.hasPrefix("A")}但是由于某种原

swift - Apple 的 Swift 编译器在 Array 上创建扩展方法时提示部分应用

作为学习Swift的练习,我正在尝试为数组编写最小和最大函数,如下所示:extensionArray{funccomparest(comparator:T->C,_op:(C,C)->Bool)->T?{varmin=self.firstforeleminself{ifop(comparator(elem),comparator(min!)){min=elem}}returnmin}funcminimum(var_comparator:(T->C)?=nil)->T?{ifcomparator==nil{comparator={elem->CinelemasC}}returnself.

swift - Comparable 协议(protocol)可以通用吗?

考虑这个结构:structPerson:Comparable{letname:Stringletage:Int}extensionPerson{staticfuncBool{returnlhs.nameBool{returnlhs.age==rhs.age&&lhs.name==rhs.name}}Person结构现在按名称排序。但是,如果我希望能够按name中的任何一个进行排序怎么办?或age,有没有办法制作功能通用? 最佳答案 您不能使协议(protocol)通用。有两种方法可以解决您的问题:您可以创建一个包装器结构,它只包含一

ios - 在 Swift 4 中对结构数组进行排序

我有下面的struct并想按startTime字段对session中的项目进行排序。我完全不知道该怎么做。我试过:letsortedArray=sessionsData?.items.sorted{($0["startTime"]as!String)但这只是给我一个关于没有下标成员的错误?非常感谢任何指点,谢谢。publicstructsessions:Decodable{letstatus:String?letstart:Int?letcount:Int?letitems:[sessionInfo]?letitemsCount:Int?letmultipart:Bool?letsta

swift - 无法在 Swift 的数组扩展方法中创建默认闭包参数

作为学习Swift的练习,我尝试在Array上创建最小和最大扩展方法。使用名为comparest的共享方法.一切都经过测试并且运行良好,除了一件事:我无法使用minimum没有参数的函数。我已将默认参数值指定为nil,但当我调用minimum时,Apple的Swift编译器不喜欢它没有这个参数。这是我的方法定义。他们编译得很好。extensionArray{funccomparest(comparator:T->C,_op:(C,C)->Bool)->T?{varmin=self.firstforeleminself{ifop(comparator(elem),comparator(m

Swift 4 Conform Comparable 协议(protocol)和排序方法问题

我编写了符合Comparable协议(protocol)的Struct。structRecord:Comparable{staticfuncBool{iflhs.wins==rhs.wins{returnlhs.losses>rhs.losses}returnlhs.wins使用>[__lldb_expr_48.Record(wins:4,losses:7),__lldb_expr_48.Record(wins:3,losses:9),__lldb_expr_48.Record(wins:3,losses:8)]最高的胜利应该首先出现,其次是较少的胜利,但如果胜利相等,那么较少的损失应

ios - 在 Swift 中使用 Comparable 扩展 @objc 协议(protocol)

我正在尝试使用Comparable扩展我的协议(protocol)Option以使用简单的.sort()方法。下面的简短示例仅使用Equatable来显示错误。@objcprotocolOption:Equatable{vartitle:String{get}varenabled:Bool{get}varposition:Int{get}}func==(lhs:Option,rhs:Option)->Bool{returnlhs.position==rhs.position}Option协议(protocol)必须标记为@objc或继承自NSObjectProtocol因为它将与UIK