objective-c - C/Objective-C 中的 Perl 中的 "<=>"运算符是否有替代方案?

标签 objective-c perl compare

我正在实现一些自定义 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: 方法就是您正在寻找的方法? NSStringNSNumber 等实现它。 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/

相关文章:

perl - 如何获取目录及其子目录中的文件的句柄?

java - 类型转换后的比较

objective-c - Objective-C-初始化已经初始化的对象?

ios - iOS 中 didReceiveRemoteNotification 的两个委托(delegate)方法有什么区别?

perl - 使用 XML::LibXML 在 Perl 中提取 XML 标签内容

perl - 用于返回数组的两个最大值的具有低计算复杂度的单行是什么?

ios - 如何在没有硬核索引的情况下删除父数组中子数组的重复项

ios - 在 setAttributedTitle 之后无法更改 UIButton 标题

r - 如何比较一组列与另一组列?

java - 如何处理接受字符串或整数的通用 Java 类的比较运算符