猿问

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

编写一个名为 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();

我确切地知道我的任务要求什么,但我不知道如何处理一个有参数的函数。(我没有上传图片,因为我认为它没有必要。)


Smart猫小萌
浏览 167回答 2
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 并不能解决问题,但这是您如何与传入的函数进行交互的示例。

扬帆大鱼

只需检查一下:function do2and3(operation) {  console.log(operation(2, 3));}do2and3((x, y) => x + y); // Adddo2and3((x, y) => x - y); // Reductdo2and3((x, y) => x * y); // Multiplydo2and3((x, y) => x / y); // Dividedo2and3(function(x, y) {  // A more complex example  console.log(x);  console.log(y);  return Math.pow(x, y);})将函数作为参数传递允许主函数像调用普通函数一样调用它,这使您能够扩展某些东西而无需修改它。这样做的好处是您可以将功能“注入”到现有函数中而无需更改它。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答