我用什么类型的变量来存储数学运算符?

时间:2010-07-02 09:36:45

标签: iphone objective-c math variables operators

我正在尝试放置具有运算符的按钮,例如/ * +等。我想以这样的方式存储运算符,我可以在表达式中使用它,例如1 var 2 = 8

我想避免为每个操作符使用不同的方法,因此我认为操作符var是我的最佳选择。适用于iPhone的Objective-C

4 个答案:

答案 0 :(得分:4)

通常的OO方法是创建一个“mathOperator”类,它有一个带有两个参数的方法“performOp”,然后从中继承表示不同操作的不同类。我不是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;
}

答案 1 :(得分:4)

Cocoa Design Patterns中阅读第5章。使用的方法是定义“Command”类,它们将执行定义为类方法“execute”的每个操作。然后,您可以通过使用以下

获取适当的类来动态执行操作
commandName = [NSString stringWithFormat:@"MY%@Command", [commandString capitalizedString]];
commandClass = NSClassFromString(commandName);  
result = [commandClass executeWithXValue:x yValue:y]; 

答案 2 :(得分:1)

我这样做的方法是为每种类型的算术制作方法并将数字传递给它们。然后用变量调用函数来代替所有。

答案 3 :(得分:0)

C中没有这样的东西。你必须使用一个调用方法来做你想做的事情的选择器。