2012-03-02 2 views
0

Как пройти first_number и second_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'? Эта строка кода трудно понять. –

+0

Нам нужно больше кода. Что такое подпись метода для 'add_function' ?. Кроме того, что такое 'math_class'? – gregheo

+0

Добавлен больше кода. – ConfusedDeer

ответ

1

Существует несколько проблем с кодом, который вы опубликовали.

Прежде всего, соглашение в Cocoa Touch является то, что имена классов используют верблюжье дело и начать с прописной буквой: MathClass, неmath_class. Названия методов используют верблюжий случай, и каждое ключевое слово начинается с буквы нижнего регистра. Если вы придерживаетесь соглашения об именах, другим людям будет легче понять ваш код, поэтому вам будет легче получить помощь, когда у вас возникнет проблема.

Теперь в вашем 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: и принимает аргумент double с именем number_one.Второе ключевое слово - это только : и принимает аргумент double с именем number_two.

Вы могли называют этот метод так:

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: и принимает аргумент double с именем firstNumber. Второе ключевое слово: number: и принимает аргумент double с именем secondNumber. Вы можете называть это следующим образом:

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

Похоже, вы пытаетесь получить доступ к функции, используя синтаксис свойства объектной точки. Если 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

+0

Обновлено в настоящее время Получение Ожидаемое ']' до 'first_number' – ConfusedDeer

-1

Возможно, вам следует позвонить [math_class add_function:first_number:second_number]; Ваш класс называется math_class, а не математикой.

+0

Исправлено и заменено предложением, которое вы предоставили и в настоящее время принимаете ошибку: Ожидается ']' перед 'first_number' – ConfusedDeer

+0

, это немного грубо, чтобы быть -1''пользователями, которые пытаются вам помочь, когда они отправили, прежде чем вы обновили свой вопрос. –

+0

Бен я, конечно, ценю вашу помощь и не «-1» вы. Я ответил ДА на вопрос, был ли это вам полезен. Не знаю, как вы или кто-то другой закончили с -1. Снова ... спасибо за вашу помощь. Кроме того, я только что отметил, что для голосования вам нужно 125 очков репутации. У меня только 1, поэтому я не могу голосовать ни за что. – ConfusedDeer

 Смежные вопросы

  • Нет связанных вопросов^_^