我试图把有运营商对他们的按钮,像/ * +
,等我想运营商存储以这样的方式,我可以在表达式中使用它,就像1 var 2 = 8
我用什么类型的变量来存储数学运算符?
我想避免不得不为每个操作符使用不同的方法,所以操作符var将是我最好的选择,我想。 Objective-C for iPhone
我试图把有运营商对他们的按钮,像/ * +
,等我想运营商存储以这样的方式,我可以在表达式中使用它,就像1 var 2 = 8
我用什么类型的变量来存储数学运算符?
我想避免不得不为每个操作符使用不同的方法,所以操作符var将是我最好的选择,我想。 Objective-C for iPhone
通常的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;
}
C中没有这样的事情,你必须使用一个选择器来调用一个方法去做你想做的事。
读CH 5 Cocoa Design Patterns。使用的方法是定义“Command”类,它们将执行定义为类方法“execute”的每个操作。然后你就可以获取相应的类使用以下
commandName = [NSString stringWithFormat:@"MY%@Command", [commandString capitalizedString]];
commandClass = NSClassFromString(commandName);
result = [commandClass executeWithXValue:x yValue:y];
的方式我会做到这一点是为每个类型arithmatic的方法,并通过数字放进去动态地执行该操作。然后,而不是所有与变量调用该函数。