Обычный OO-способ сделать это - создать класс "mathOperator", у которого есть метод "executeOp", принимающий два параметра, а затем наследовать от него разные классы, которые представляют разные операции.Я не эксперт по Objective-C, поэтому мой синтаксис, вероятно, немного не в порядке, но я думаю, что вы напишите что-то вроде:
result = [var On:arg1 And:arg2];
например
result = [var On:2 And:3];
установит result
на 5 или 6 в зависимости от того, было ли var
установлено на add
или mul
.Реализация будет выглядеть (опять же очень грубо):
@interface Add: mathOperator
-(int)On: (int)arg1 And: (int)arg2;
@end
...
@implementation Add
-(int)On: (int)arg1 And: (int)arg2 {
return arg1 + arg2;
}
и, конечно, аналогична для других операторов:
@implementation Mul
-(int)On: (int)arg1 And: (int)arg2 {
return arg1 * arg2;
}