为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript,如果函数的参数是函数怎么办?

Javascript,如果函数的参数是函数怎么办?

Smart猫小萌 2021-10-29 15:51:43
编写一个名为 imageMap 的函数,其类型如下:imageMap(img: Image, func: (img: Image, x: number, y: number) => Pixel): Image结果必须是与 img 尺寸相同的新图像。新图像中每个像素的值,应该是将 func 应用于 img 的每个像素的结果。您的函数将使用 lib220.createImage 或 image.copy 来创建新图像,或制作原始图像的副本。请注意,lib220.createImage 的 fillColor 参数需要是像素值。右图显示了使用 imageMap 函数的示例输出,如下所示:let url = 'https://people.cs.umass.edu/~joydeepb/robot.jpg';let robot = lib220.loadImageFromURL(url);imageMap(robot, function(img, x, y) {  const c = img.getPixel(x, y);  return [c[0], 0, 0];}).show();我确切地知道我的任务要求什么,但我不知道如何处理一个有参数的函数。(我没有上传图片,因为我认为它没有必要。)
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

这是起点:


function imageMap(img, func) {

  // in here, make one or more calls to func. For example:

  const pixel5_5 = func(img, 5, 5);

}

显然,仅使用 5,5 调用 func 并不能解决问题,但这是您如何与传入的函数进行交互的示例。


查看完整回答
反对 回复 2021-10-29
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

只需检查一下:


function do2and3(operation) {

  console.log(operation(2, 3));

}


do2and3((x, y) => x + y); // Add

do2and3((x, y) => x - y); // Reduct

do2and3((x, y) => x * y); // Multiply

do2and3((x, y) => x / y); // Divide


do2and3(function(x, y) {  // A more complex example

  console.log(x);

  console.log(y);

  return Math.pow(x, y);

})


将函数作为参数传递允许主函数像调用普通函数一样调用它,这使您能够扩展某些东西而无需修改它。


这样做的好处是您可以将功能“注入”到现有函数中而无需更改它。


查看完整回答
反对 回复 2021-10-29
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信