gpt4 book ai didi

javascript - 什么知道匹配(50)和匹配(0)的值?

转载 作者:行者123 更新时间:2023-12-04 03:38:55 24 4
gpt4 key购买 nike

我已经在线下载了 pdf 的 javascript 测验。在测验中得到以下问题但被输出卡住了?

const matched = x => ({
on: () => matched(x),
otherwise: () => x,
})
const match = x => ({
on: (pred, fn) => (pred(x) ? matched(fn(x)) : match(x)),
otherwise: fn => fn(x),
})
match(x)
.on(x => x < 0, () => 0)
.on(x => x >= 0 && x <= 1, () => 1)
.otherwise(x => x * 10)
match(50) & match(0) 的值是多少?

最佳答案

我们可以一步一步地调试语句,最终我们会得到预期的结果。但是如果我们深入研究逻辑,有一个简单的方法:

无论我们调用 matched 多少次,

  • x 都会保留输入的 on,然后在 otherwise 上产生输入作为最终结果。
  • match 将首先检查 pred 条件
  • 如果计算结果为 true ,则它根据我们传递给 fnon 计算结果,将结果保存在 matched 对象
  • 如果 pred 计算结果为 false ,那么它不匹配,因此它返回相同的 match 对象,等待下一个匹配。如果最后没有匹配到,就会调用我们传递给 otherwise 的函数来得到最终的结果。


  • 基于我们上面的内容,我们注意到 match 对象将评估每个 on 事件的条件,保留第一个 matched 结果,最后在 otherwise 事件上返回它。
    所以我们有几个 pred 条件
  • x => x < 0
  • x => x >= 0 && x <= 1
  • 50 与这些都不匹配,因此它将调用我们传递给 fn 的最终 otherwise ,即 x => x*10 因此我们有 5001 匹配第二个条件,因此在第二次迭代中它产生 1 因为我们将 () => 1 作为 fn 传递,结果保存在 matched 对象中,直到我们使用 otherwise 检索它,因此我们有 1
    这是那些闻起来很聪明但我们永远不应该在生产中使用的 JavaScript 函数的一个例子。

    关于javascript - 什么知道匹配(50)和匹配(0)的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66416900/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com