Какой тип переменной я использую для хранения математического оператора? - PullRequest
1 голос
/ 02 июля 2010

Я пытаюсь поместить кнопки с операторами, например / * + и т. Д. Я хочу сохранить оператор таким образом, чтобы использовать его в выражении, например 1 var 2 = 8

Я бы хотел избежать использования разных методов для каждого оператора, поэтому я думаю, что оператор var был бы моим лучшим вариантом. Objective-C для iPhone

Ответы [ 4 ]

4 голосов
/ 02 июля 2010

Обычный 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;
}
4 голосов
/ 02 июля 2010

Чтение 5 в Шаблоны проектирования какао . Используемый подход заключается в определении классов «Command», которые будут выполнять каждую операцию, определенную как метод класса «execute». Затем вы можете динамически выполнить операцию, получив соответствующий класс, используя следующую команду

commandName = [NSString stringWithFormat:@"MY%@Command", [commandString capitalizedString]];
commandClass = NSClassFromString(commandName);  
result = [commandClass executeWithXValue:x yValue:y]; 
1 голос
/ 05 июля 2010

Я бы сделал так, чтобы создать методы для каждого типа арифметики и передать в них числа.Тогда вместо всего этого с переменной вызовите функцию.

0 голосов
/ 02 июля 2010

В C. такого нет. Вам придется использовать селектор, который вызывает метод, чтобы делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...