2012-03-02 95 views
0

如何將first_numbersecond_number傳遞給+add_function? 我目前正在取得數學未申報。對類方法語法感到困惑

此外,我已經把磅包括math_class-addButtonClicked:IBAction

此外,我意識到我可以簡單地在IBAction中添加這兩個數字,但出於學習的目的,我想將它們傳遞給我的math_class

-(IBAction)addButtonClicked  
{ 
    double total; 
    double first_number = [firstNumberField.text doubleValue]; 
    double second_number = [secondNumberField.text doubleValue]; 

    total = [math_class.add_function number_one:first_number number_two:second_number]; 
    answerField.text = [NSString stringWithFormat:@"%.2f", total]; 

    [answerField setHidden:NO]; 
} 

@interface math_class : NSObject 

+ (double) add_function: (double) number_one: (double) number_two; 

@end 

@implementation math_class 

+(double) add_function: (double) number_one: (double) number_two 
{ 
    double total; 
    total = number_one + number_two; 
    return total; 
} 

@end 
+1

'add_function'是'math_class'上的一個屬性嗎?該行代碼難以理解 – 2012-03-02 16:46:28

+0

我們需要更多的代碼。什麼是'add_function'的方法簽名?另外,什麼是'math_class'? – gregheo 2012-03-02 16:46:30

+0

增加了更多代碼。 – ConfusedDeer 2012-03-02 19:18:46

回答

1

您發佈的代碼有幾個問題。

首先,在可可觸摸的約定是,類名使用駱駝情況下,並用大寫字母開頭:MathClassmath_class。方法名稱使用camel-case,每個關鍵字以小寫字母開頭。如果你堅持命名慣例,其他人會更容易理解你的代碼,所以當你遇到問題時,你會更容易獲得幫助。現在

,在你math_class類,你宣佈這樣的方法:

+ (double) add_function: (double) number_one: (double) number_two; 

但是你已經把在空間和冷落空間在一個不尋常的方式。通常的方法寫出來,正好保持相同的方法名,如下所示:

+ (double)add_function:(double)number_one :(double)number_two; 

這個方法的名稱是add_function::add_function number_one:number_two:(這是你用來嘗試叫什麼)。

此方法名稱有兩個關鍵字。第一個關鍵字是add_function:並且採用名爲number_onedouble參數。第二個關鍵字僅爲:,並且採用名爲number_twodouble參數。

可能調用此方法是這樣的:

total = [math_class add_function:first_number :second_number]; 

但是,使用方法與名稱只是:的關鍵詞幾乎總是很糟糕的風格。

有很多方法來寫你的好作風類。這裏有一種方法:

@interface MathClass : NSObject 

+ (double)sumWithNumber:(double)firstNumber number:(double)secondNumber; 

@end 

@implementation MathClass 

+ (double)sumWithNumber:(double)firstNumber number:(double)secondNumber { 
    return firstNumber + secondNumber; 
} 

@end 

當一個方法主要用於它的返回值,而不是副作用,我們返回的東西來給它命名。所以我把它稱爲sumWithNumber:number:,因爲它返回一個和。

的方法名稱有兩個關鍵字。第一個關鍵字是sumWithNumber:並採用名爲firstNumberdouble參數。第二個關鍵字是number:,並採用名稱爲secondNumberdouble參數。你可以這樣稱呼它:

total = [MathClass sumWithNumber:first_number number:second_number]; 
-1

它看起來像你試圖訪問使用objective-c點屬性語法的函數。如果add_function被定義爲:

+(void) add_function: ... 

..和math_class是類的名字,你應該使用

[match_class add_function number_one:....... 

注意的空間,而不是點。

編輯現在你已經發布的代碼:

您的add_function定義是錯誤的 - 在OBJ-C,你需要給參數的名稱和變量的不像大多數其他語言的名稱。

這裏的add_function簽名可能是什麼樣子:

+(double) add_function_number_one: (double) number_one number_two: (double) number_two 

有可可公約,該功能的名稱中包含的第一個參數的名稱,因此,爲什麼它現在被稱爲add_function_number_one。

+0

用更多代碼更新。 – ConfusedDeer 2012-03-02 18:13:00

+0

更新目前得到「FIRST_NUMBER」 – ConfusedDeer 2012-03-02 19:08:43

-1

你也許應該打電話[math_class add_function:first_number:second_number];你的課叫做math_class,不算數學。

+0

固定,並用你提供的建議,目前收到錯誤替換之前預期的「]」:「FIRST_NUMBER」 – ConfusedDeer 2012-03-02 18:50:48

+0

之前預計「]」這是一個有點粗魯要-1'ing人想幫你,當他們發佈之前,你更新你的問題。 – 2012-03-02 19:48:50

+0

本我當然感謝你的幫助,並沒有「-1」你。關於這個問題,我回答「是」對您有幫助。不知道你或其他人如何以-1結束。再次...感謝您的幫助。另外,我剛纔注意到要投票下來,你需要125點聲望點。我只有1個,因此我不能爲此而投票。 – ConfusedDeer 2012-03-02 20:18:10