2010-07-02 43 views
1

我试图把有运营商对他们的按钮,像/ * +,等我想运营商存储以这样的方式,我可以在表达式中使用它,就像1 var 2 = 8我用什么类型的变量来存储数学运算符?

我想避免不得不为每个操作符使用不同的方法,所以操作符var将是我最好的选择,我想。 Objective-C for iPhone

回答

4

通常的OO方法是创建一个类“mathOperator”,该类有一个方法“performOp”带两个参数,然后继承表示不同操作的不同类。我不是在Objective-C的专家,所以我的语法可能有点过,但我想你会写这样的:

result = [var On:arg1 And:arg2]; 

例如

result = [var On:2 And:3]; 

将设置result到5或6取决于var是否设置为addmul。实施将看起来像(再次,很不客气):

@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; 
} 
0

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

4

读CH 5 Cocoa Design Patterns。使用的方法是定义“Command”类,它们将执行定义为类方法“execute”的每个操作。然后你就可以获取相应的类使用以下

commandName = [NSString stringWithFormat:@"MY%@Command", [commandString capitalizedString]]; 
commandClass = NSClassFromString(commandName); 
result = [commandClass executeWithXValue:x yValue:y]; 
1

的方式我会做到这一点是为每个类型arithmatic的方法,并通过数字放进去动态地执行该操作。然后,而不是所有与变量调用该函数。

相关问题