5.3 组合

优质
小牛编辑
135浏览
2023-12-01

正如你所期待的那样,一旦定义了一个新函数,你既可以将它用作表达式的一部分,也可以用现有的函数构造新的函数。举个例子,给定圆心和圆周上的一点,如何计算圆的面积?

假设圆心坐标保存在变量xc和yc中,而圆周上那点的坐标是xp和yp。第一步就是计算圆的半径,也就是这两点间的距离。幸运的是,我们前面定义的distance函数就是计算两点间距离的。

double radius = distance(xc,yc,xp,yp);

第二步就是使用半径计算圆面积并返回。

   double result = area(radius);
   return result;

然后将这两步封装在一个函数中:

double fred(double xc,double yc,double xp,double yp){
  double radius = distance(xc,yc,xp,yp);
  double result = area(radius);
  return result;
}

函数名fred可能看起来很奇怪。我下一节再解释原因。

临时变量radius和area对开发和调试而言是有意义的,程序工作正常之后我们就可以通过组合函数调用使代码更简洁:

double fred(double xc,double yc,double xp,double yp){
  return area(distance(xc,yc,xp,yp));
}