Eloquent Javascript:高阶函数示例

2023-12-11

  function reduceAncestors(person, f, defaultValue) {
    function valueFor(person) {
      if (person == null)
        return defaultValue;
      else
        return f(person, valueFor(byName[person.mother]),
                       valueFor(byName[person.father]));
  }
    return valueFor(person);
  }


  function sharedDNA(person, fromMother, fromFather) {
    if (person.name == "Pauwels van Haverbeke")
      return 1;
    else
      return (fromMother + fromFather) / 2;
  }
  var ph = byName["Philibert Haverbeke"];
  console.log(reduceAncestors(ph, sharedDNA, 0) / 4);
  // → 0.00049

我在理解 Eloquent Javascript 的这个例子时遇到了很多困难。这是高阶函数章节(第 5 章)末尾的示例,标题为“Great-Great-Great...”,我看不出 fromMother 和 fromFather 从哪里获取它们的值。我认为他们指的是 valueFor(byName[person.mother] 和 valueFor(byName[person.father]),但我不知道“valueFor”函数如何或何时从数据中检索实际数值(请注意,我显然没有在这篇文章中包含数据,也没有包含 byName 函数)。提前感谢您的帮助!


reduceAncestors(ph, sharedDNA, 0) / 4)通过sharedDNA函数作为第二个参数。

它被分配给f here:

function reduceAncestors(person, f, defaultValue)

f在这里被调用:

f(person, valueFor(byName[person.mother]), valueFor(byName[person.father]));

…您可以在其中看到分配给的第二个和第三个参数fromMother and fromFather:

function sharedDNA(person, fromMother, fromFather) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eloquent Javascript:高阶函数示例 的相关文章

随机推荐

  • Java 泛型和泛型类型

    我有一个 ExtA 类 其中包含一个过滤函数来过滤 ArrayList public ExtA
  • leaflet 插件和 leafletProxy 以 polylineDecorator 为例

    另请参考一个问题leaflet 插件和 leafletProxy 我想用折线装饰器插件在 R 的传单中 下列的有关如何使用 R 中的传单插件的说明 如果我将该方法与leaflet 请参阅第一个示例 它按我想要的方式工作 但如果我尝试使用相同
  • Excel 互操作:_Worksheet 还是 Worksheet?

    我目前正在撰写有关动态类型的文章 并给出了 Excel 互操作的示例 我以前几乎没有做过任何 Office 互操作 这表明了这一点 这MSDN Office 互操作教程对于 C 4 使用 Worksheet界面 但还有一个Worksheet
  • 在 Python Social Auth 中获取 Facebook 用户喜欢

    我正在使用 Django 启动一个项目 并尝试允许用户使用 Facebook 登录 出于网站目的 我想将用户喜欢存储在我的数据库中 我以 Python Social Auth 我用于该项目的库 上的示例应用程序为例 并且编写了一个用于在数据
  • 在 IIS 服务器上发布 C# 控制台应用程序

    是否可以在 IIS 服务器上部署控制台 C 应用程序 我有一个 exe 文件在一台机器上运行 该文件从命名管道获取数据 我的 C 应用程序从管道获取此数据并将其发送到使用 TCP 套接字运行的 Web 应用程序 我想知道是否可以部署我的 C
  • JavaScript 分离轴定理

    我正在尝试使用 JavaScript 中的分离轴定理来检测两个正方形碰撞 一个旋转 一个不旋转 尽管我很努力 但我无法弄清楚这在 JavaScript 中会是什么样子 也找不到任何 JavaScript 示例 请帮忙 用简单的数字或 Jav
  • 在 Google Colab 文本单元中插入图像

    我想将图像插入到 google colab 中的文本单元格中 该图像已上传到 google 云端硬盘中 为此 我使用 Markdown 语法 名称 获取可共享链接 但这不起作用 我的链接如下所示 https drive google com
  • 为什么 CSS :active on link 不会突出显示当前页面链接?

    我有下面的代码用于列表到母版页 div ul li a href default aspx Home a li li a href page1 aspx Page1 a li ul div with css header a hover c
  • 同时访问<地址>,但修改需要独占访问

    我想指定一个属性 它是一个用于在函数中进行操作的数组myFunc 但我收到此错误 这是我的代码草图 self data MyObject func myFunc x inout Int y inout Int manipulation co
  • 从Flask路线启动scrapy

    我想构建一个爬虫 它获取要抓取的网页的 URL 并将结果返回到网页 现在我从终端启动 scrapy 并将响应存储在文件中 当某些输入发布到 Flask 时 如何启动爬虫 处理并返回响应 您需要在 Flask 应用程序中创建一个 Crawle
  • C# 中如何获取目录中的文件列表

    所以 我正在用 C 开发 mp3 播放器 但我遇到了一个问题 我想从列表中的目录中获取所有文件 因此您可以选择 您要播放的歌曲 这是获取文件的代码 string music Directory GetFiles dir mp3 然后就可以玩
  • 关联对象什么时候被释放?

    我通过对象 A 的关联引用来附加对象 B 对象 B 通过 KVO 观察对象 A 的一些属性 问题是对象 B 似乎已被释放after对象 A 这意味着将自身作为对象 A 的 KVO 观察者删除为时已晚 我知道这一点是因为我收到 NSKVODe
  • 输出给定字符串中第一个重复字符的代码?

    我试图找到字符串中的第一个重复字符并使用 python 输出该字符 检查我的代码时 我可以看到我没有索引代码的最后一个字符 我究竟做错了什么 letters acbdc for a in range 0 len letters 1 prin
  • NHibernate 过滤器集合

    使用 NHibernate 我想过滤类中的集合以仅包含可能对象的子集 下面我提供了一个示例表数据来帮助解释 我找不到使用 NHibernate 来做到这一点的方法 表 数据对象 数据对象 ID PK 名称 当前版本 11 data txt
  • 如何在 Objective-C 中使用 Swift String 枚举?

    我有这个枚举String值 它将用于告诉记录到服务器的 API 方法消息具有哪种类型的服务器 我使用的是 Swift 1 2 因此枚举可以映射到 Objective C objc enum LogSeverity String case D
  • 与 Math.Round() 不一致

    我有两个函数旨在包含 180 180 和 之间的角度 其目的是给定从 inf 到 inf 的任何角度 它将在指定的间隔内保留等效角度 例如1550 的角度是 110 public double WrapBetween180 double a
  • php异步cURL请求

    我正在使用 PHP 开发一个网站并使用 cURL 发送请求 我有一个网站 它会进行一些计算 我需要从中得到响应 我正在通过 cURL 发送请求 目前我正在做的是发送请求 等待 10 秒 然后再次发送 最多 3 次 如果没有收到 良好 响应
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • CSS:滚动条没有 100% 的高度/宽度

    是否可以强制垂直滚动条的高度小于其所属可滚动 div 的 100 使用纯 CSS 并适用于除 IE 之外的所有现代浏览器 到目前为止我想出的只是仅限 webkit解决方案与它的 webkit scrollbarCSS 选择器和自定义按钮高度
  • Eloquent Javascript:高阶函数示例

    function reduceAncestors person f defaultValue function valueFor person if person null return defaultValue else return f