Fraction+Comparison.h#import "Fraction.h"
@interface Fraction (Comparison)
-(BOOL) isEqualTo: (Fraction *) f;
-(int) compare: (Fraction *) f;
@end
Fraction+Comparison.m#import "Fraction+Comparison.h"
@implementation Fraction (Comparison)
-(BOOL) isEqualTo: (Fraction *) f
{
return ![self compare:f] ? TRUE : FALSE;
}
-(int) compare: (Fraction *) f
{
int a = num * f.den;
int b = f.num * den;
return a == b ? 0 : a > b ? 1 : -1;
}
@end
Pay attention that receiver and argument remains unchanged in both methods,
and everything is done in
-(int) compare: (Fraction *) f actually
