2

我正在学习objective-c(通过apple)并且刚刚完成了解释方法语法的部分。

我决定在“助手”类中编写一个非常简单的方法,将两个数字相加......

界面...

+ (int)addTwo:(int)num1 secondNum:(int)num2;

执行...

+ (int)addTwo:(int)num1 secondNum:(int)num2 {
    return num1+num2;
}

用法...

int test = [MyClass addTwo:1 secondNum:2];

现在我的问题是这个..

一切都编译并且在语法上是正确的,但是,在我看来,该方法的使用非常尴尬,在我看来应该是类似的东西......

int test2 = [MyClass addTwo: firstNum:(1) secondNum:(2)]

基本上,在解释 1 是第一个数字而 2 是第二个数字时更冗长的东西。

当我写这篇文章时,我发现我可以写一些像“addTo:1,thisNumber:2”这样更清楚的东西,但我担心我错过了一些重要的东西,或者我没有掌握课程正在尝试的东西去教。

我已经习惯了 Java,所以很多东西在某些方面都是新的,如果这是编写客观 c 代码的方式,那很好,但我只是想确保我没有遗漏任何东西。

提前致谢。

4

2 回答 2

2

命名 Objective C 方法需要一些时间来适应:这个想法是将第一个参数的描述“粘合”到方法的名称上:

+ (int)addFirstNum:(int)num1 toSecondNum:(int)num2 {
    return num1+num2;
}

这个想法是让你的选择器的名字读起来尽可能地接近英文。在这种情况下,选择器的名称是addFirstNum:toSecondNum:,它的英文显示为 OK。

于 2013-01-05T04:55:52.780 回答
0
int test2 = [MyClass addTwo: firstNum:(1) secondNum:(2)]

在这个提案中,您似乎将firstNumsecondNum视为变量名。那是错的。

在 Objective-C 中,方法名是+addFirstNum:secondNum:,传入的参数是冒号:[MyClass addFirstNum:1 secondNum:2],但没有像变量名这样的东西。

在像 Python 这样具有命名参数的语言中,你可以这样做addNums(first = 1, second = 2),这将等于addNums( second = 2, first = 1),但在 Objective-C 中,它是由冒号的位置定义的。并且方法的名称不会改变。

于 2013-01-05T04:55:18.077 回答