2011-03-18 32 views
0

例如如何傳遞Ñargunment該方法

加載(INT A,INT B)在這裏,我們傳遞兩個參數INT一個,INT B,

我們可以通過參數n與不同的數據類型等int,float,long, 有可能嗎?

我的意思是我只需要編寫一個方法來處理n個參數。

+0

您想做什麼?這個問題太模糊了。 – bbum 2011-03-18 18:47:34

+0

您正在使用哪種語言?你可能是泛型:http://stackoverflow.com/questions/848641/are-there-strongly-typed-collections-in-objective-c(關於泛型在目標c中的stackoverflow文章) – Kevin 2011-03-18 18:47:58

+0

對於你用Objective- C。您在頂部寫的是沒有客觀的方法。但是你可以傳遞n個參數。你可以使用一個數組。 ;-)我很抱歉,我沒有時間寫一個真正的答案。如果明天沒有答案,我會寫一個。 – 2011-03-18 18:50:00

回答

4

是的,可以將具有不同數據類型的參數傳遞給Objective-C方法。我假設你在談論Objective-C,因爲這個問題被標記爲iphone。

例如,你可以有喜歡的方法:

- (void)foo:(int)foo bar:(float)bar baz:(long)baz { 
    // ... 
} 

如果你在談論C,你可以有一個函數:

void myfunc(int foo, float bar, long baz) { 
    // ... 
} 

如果你想寫一個具有不同的功能大小參數列表(因此它可能需要1參數,或2參數,或3,...),我建議你看看這個blog post which discusses variable argument lists in Objective-C/CocoaApple's technical Q&A on variable argument lists

+0

+1給GregInYEG。到了這一點,並很好地解釋了答案 – 2011-03-18 19:07:31

+0

+1是的,可變參數是要走的路。 – TechZen 2011-03-18 19:14:51

0
- (int)add:(int)number1 to:(int)number2 { 
     return number1 + number2; 
} 

使用[obj add:2 to:4]調用它;其中obj是接收添加消息的對象。

您可以使用上述任何類型的參數來實現您的想法。例如:

- (void)add:(int)number1 to:(float)number2 { 
     //print result here 
} 

標準類型轉換等將適用於任何編程語言。

如果您正在討論完全任意數量的參數,請參閱Objective C(Google it)中的Variadic函數。在第一個搜索結果頁面上有很多很好的教程。

+0

Bourne ...感謝您的重播。有些類型我的對象會消息兩個參數或三個參數或十個參數它將是動態的。我的意思是使用兩個或三個或十個參數來調用add方法。所以我需要動態處理方法。是否有可能.. – 2011-03-18 18:56:51

+0

這正是我在最後兩行提到的。 Google在目標C – Bourne 2011-03-18 18:58:43

+0

中的可變參數功能中也可以看到GregInYEG回覆中的鏈接 – Bourne 2011-03-18 19:00:02

0

任何事情都是可能的,但我非常肯定它需要一些嚴重的黑客手段才能使其適用於可變數據類型。如果您可以將需求更改爲特定數據類型的可變數量,那麼您應該看看「可愛與愛」中的優秀教程:variable-argument-lists-in-cocoa