如何将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
答案 0 :(得分:1)
您发布的代码存在一些问题。
首先,Cocoa Touch中的约定是类名称使用驼峰大小写并以大写字母开头:MathClass
,不是 math_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:
,并采用名为double
的{{1}}参数。第二个关键字仅为number_one
,并采用名为:
的{{1}}参数。
你可以这样调用这个方法:
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:
的{{1}}参数。第二个关键字为sumWithNumber:
,并采用名为double
的{{1}}参数。你可以这样称呼它:
firstNumber
答案 1 :(得分:-1)
看起来您正在尝试使用objective-c dot属性语法来访问函数。如果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
在cocoa中有一个约定,函数的名称包含第一个参数的名称,因此它现在称为add_function_number_one。
答案 2 :(得分:-1)
你可能应该调用[math_class add_function:first_number:second_number];
你的类被称为math_class,而不是数学。