#import <Foundation/Foundation.h>
@interface NSNumber (MathExt)
- (NSNumber *)add:(NSNumber *)otherNumber;
@end
@implementation NSNumber (MathExt)
- (NSNumber *)add:(NSNumber *)otherNumber
{
double left = [self doubleValue];
double right = [otherNumber doubleValue];
return [NSNumber numberWithDouble:left+right];
}
@end
int main()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSNumber *one = [NSNumber numberWithDouble:1.2];
NSNumber *two = [NSNumber numberWithInt:2];
NSNumber *three = [NSNumber numberWithBool:YES];
NSNumber *four = [NSNumber numberWithChar:'a'];
NSNumber *result = [one add:two];
result = [result add:three];
result = [result add:four];
NSLog(@"%f", [result doubleValue]);
[pool release];
return 0;
}
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CgpAaW50ZXJmYWNlIE5TTnVtYmVyIChNYXRoRXh0KQoKLSAoTlNOdW1iZXIgKilhZGQ6KE5TTnVtYmVyICopb3RoZXJOdW1iZXI7CgpAZW5kCgpAaW1wbGVtZW50YXRpb24gTlNOdW1iZXIgKE1hdGhFeHQpCgotIChOU051bWJlciAqKWFkZDooTlNOdW1iZXIgKilvdGhlck51bWJlcgp7CiAgICBkb3VibGUgbGVmdCA9IFtzZWxmIGRvdWJsZVZhbHVlXTsKICAgIGRvdWJsZSByaWdodCA9IFtvdGhlck51bWJlciBkb3VibGVWYWx1ZV07CiAgICAKICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpsZWZ0K3JpZ2h0XTsKfQoKQGVuZAoKaW50IG1haW4oKQp7Ck5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CgpOU051bWJlciAqb25lID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4yXTsKTlNOdW1iZXIgKnR3byA9IFtOU051bWJlciBudW1iZXJXaXRoSW50OjJdOwpOU051bWJlciAqdGhyZWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKTlNOdW1iZXIgKmZvdXIgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aENoYXI6J2EnXTsKCk5TTnVtYmVyICpyZXN1bHQgPSBbb25lIGFkZDp0d29dOwpyZXN1bHQgPSBbcmVzdWx0IGFkZDp0aHJlZV07CnJlc3VsdCA9IFtyZXN1bHQgYWRkOmZvdXJdOwoKTlNMb2coQCIlZiIsIFtyZXN1bHQgZG91YmxlVmFsdWVdKTsKCltwb29sIHJlbGVhc2VdOwoKcmV0dXJuIDA7Cn0=