2010-07-02 45 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的方法,並通過數字放進去動態地執行該操作。然後,而不是所有與變量調用該函數。

相關問題