我正在实现一些自定义 NSArray 排序选择器,我想知道 C/Objective-C 中是否有类似 <=> 运算符的东西?
我有这个:
if (self.count == otherObject.count) return 0;
return (self.count > otherObject.count)? 1 : -1;
并且希望拥有(如 Perl 中的那样)
return self.count <=> otherObject.count;
最佳答案
也许 compare:
方法就是您正在寻找的方法? NSString
、NSNumber
等实现它。 Cocoa 中所有类似比较的方法都会返回 NSComparisonResult:
enum {
NSOrderedAscending = -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInteger NSComparisonResult;
所以你可以直接使用返回的整数值。假设您问题中的 count
是一个 NSNumber
您可以执行以下操作:
return [self.count compare:otherObject.count];
如果您的情况仅限于数字并且您只想使用运算符,您可能可以使用旧的减号。但要注意整数溢出!:
return self.count - otherObject.count;
关于objective-c - C/Objective-C 中的 Perl 中的 "<=>"运算符是否有替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665652/