通过Big Nerd Ranch Obj-C Book工作.
函数章节中的挑战要求你编写给定三角形的两个角度的函数将返回第三个.很简单.
我的代码(有效):
#include <stdio.h>
float triangle(float angleA, float angleB) {
float angleC = 180 - (angleA + angleB);
printf("The third angle of the triangle is %f degrees", angleC);
return angleC;
}
int main(int argc, const char * argv[]) {
float angleA = 30.0;
float angleB = 60.0;
triangle(angleA, angleB);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我宣布浮动angleC范围内triangle().
这本书的答案已angleC在内部调用main()
书回答:
float triangle(float angleA, angleB) {
return 180 - (angleA + angleB);
}
int main (int argc, constant char * argv[]) {
float angleA = 30.0;
float angleB = 60.0;
float angleC = triangle(angleA, angleB);
printf("The third angle of the triangle is %f degrees.", angleC);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我声明var的地方有用angleC吗?我们的两个版本的代码之间有区别,还是比另一个更好?
考虑责任方面的差异.triangle()打印结果是否真的是函数的责任?如果您想将此函数重用于不需要打印结果的其他目的,会发生什么?
在这个特定问题的情况下,两种解决方案都是等效的.但是这本书的解决方案更容易推广和重复使用,这是一个优点.