有什么方法可以通过属性访问函数的返回值吗?

2024-02-22

我是一名 JS 开发人员,正在尝试函数式编程思想,我想知道是否可以按照 Promise 链的编写方式使用链来实现同步函数。

例如:

function square (num) {
  return num * num;
}
let foo = 2 
let a = square(foo) //=> 4
let b = square(square(foo)) //=> 16

很公平,但我想做的(通常是为了使代码解析更容易)是通过将其作为链的第一个参数传递来将这些方法链接在一起。这样这样的事情就可以工作:

let c = square(foo)
          .square()
          .square() //=> 256

有没有办法用普通的 javascript 来做到这一点,或者这是我必须修改 Function.prototype 才能做到的事情?


您可能对 Identity 函子感兴趣 - 它允许您提升任何函数来对 Identity 的值进行操作 - 例如,square and mult以下。您无需接触原生原型即可获得可链接的界面 ^_^

const Identity = x => ({
  runIdentity: x,
  map: f => Identity(f(x))
})

const square = x => x * x

const mult = x => y => x * y

let result = Identity(2)
  .map(square)
  .map(square)
  .map(square)
  .map(mult(1000))
  .runIdentity
  
console.log(result)
// 256000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以通过属性访问函数的返回值吗? 的相关文章

随机推荐

  • 创建项目后可以在android studio中更改公司域名吗?

    当我在 android studio 中创建 android 项目时 我发现了字段 公司域名 我首先使用一些名称创建了该字段 现在我想更改该公司的域名 可以改变吗 请帮我解决这个问题 您可以使用以下步骤更改域 对于您的示例 您正在尝试更改域
  • 将函数局部变量导出到环境

    考虑以下代码 usr bin bash t export declare dummy Hello export dummy echo dummy dummy echo printenv dummy printenv dummy t expo
  • C++0x const RValue 引用作为函数参数

    我试图理解为什么有人会编写一个需要常量右值引用 在下面的代码示例中 const 右值引用函数 返回 3 的用途是什么 为什么重载解析优先考虑 const Rvalue 而不是 const LValue 引用函数 返回 2 include
  • 如何将列表中的每个项目与其余项目仅比较一次?

    假设我有一个要比较的数组 列表 在我更熟悉的语言中 我会做类似的事情 for int i 0 i lt mylist size i for int j i 1 j lt mylist size j compare mylist i myli
  • 如何使用 OpenSSL 安装使 QSslSocket 支持 SSL?

    我正在尝试运行一个简单的客户端 服务器来使用 QSslSocket 实现通信 我在 Windows 上工作 不幸的是 为了更方便我使用 QtCreator 当我尝试从客户端使用连接到服务器时MyQSslSocket gt connectTo
  • 有没有验证 SQL 语法的 Java 库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 连接字符串中的经典 ASP 集成安全性

    我有旧的经典 ASP 应用程序 不是 asp net 需要对其进行配置才能使用 Microsoft SQL Server 2008 它与以下配置字符串配合使用效果很好 SERVER myServer DRIVER SQL SERVER DA
  • 有没有办法全局排除 Maven 依赖项?

    我试图找到一种 通用 方法来排除传递依赖项 而不必将其从依赖于它的所有依赖项中排除 例如 如果我想排除 slf4j 我会执行以下操作
  • QTreeWidget(为项目应用样式)

    我有一个树小部件 树中有三个级别 如下所示 Example Tree LEVEL1 LEVEL2 LEVEL2 LEVEL3 LEVEL3 LEVEL2 LEVEL2 LEVEL1 我想根据项目的级别应用不同的样式 以便我可以对 LEVEL
  • 如何为laravel的基本URL设置子目录?

    通常 laravel 会自动检测基本 url 但是 当在控制台中通过命令行调用该函数时 这是不可能的 因此 根据path to laravel folder public config app php 有一个名为url 根据官方注释 应该是
  • 从 boost::hash 获取 32 位哈希值

    我在用boost hash获取字符串的哈希值 但它在 Windows 32 位和 Debian 64 位系统上为同一字符串提供不同的哈希值 那么我怎样才能使用相同的哈希值 32位或64位 boost hash与平台无关 与什么有关的保证bo
  • Biztalk Server 2009 - 故障转移群集和网络负载平衡 (NLB)

    我们正在计划设置 Biztalk 2009 其中有 2 个 Biztalk 应用程序服务器和 2 个数据库服务器 数据库服务器位于主动 被动集群中 所有服务器都运行 Windows Server 2008 R2 作为我们应用程序的一部分 我
  • 如何使用 Selenium WebDriver python 访问隐藏的文件上传字段

    我有这样的 HTML a class btn pink medium href span class icon arrow right upload photo span a
  • GPU 显存带宽理论与实际

    作为在 GPU 上运行的算法分析的一部分 我觉得我正在达到内存带宽的要求 我有几个复杂的内核执行一些复杂的操作 稀疏矩阵乘法 归约等 和一些非常简单的操作 当我计算每个内核读取 写入的总数据时 似乎所有 重要的 都达到了约 79GB s 的
  • Spring 4.1.3中注册ObjectMapper来序列化Joda DateTime

    我正在尝试在 Web 应用程序中配置 ObjectMapper 以序列化 反序列化以 ISO 8601 格式显示为 Joda DateTime 的日期 我发现有用的库jackson datatype joda它的模块JodaModule所以
  • Acumatica API:将活动或注释实体添加/附加到另一个实体(即客户、联系人或机会)

    我能够添加一个 Activity 实体并能够获取 NoteId 但无法将此活动添加到特定实体 或在创建后附加它 如何使用 Rest API 或使用旧的 WSDL 来实现此目的网络服务 None
  • 如何让Java应用程序在PC启动时自动启动?

    我正在开发一个日程安排应用程序 它提醒用户一天要做的事情 它每分钟检查一次 看看时间是否到了 如果到了 它会打开一个警报窗口来提醒用户 尽管它是用 Java 编写的 但我的目标用户是 Windows 用户 它需要在用户的电脑一打开就运行 所
  • 删除包含哈希字符的日志行

    在我的 Logstash 发货程序中 我想过滤掉用哈希字符注释的行 This log row should be dropped But one this should not 我能够使用grep过滤器 但由于不鼓励 即将退役 我试图获得一
  • XHR“readyState==3”如何工作?

    这是代码片段 xhr onreadystatechange function if xhr readyState 3 console log readyState response length xhr response length 控制
  • 有什么方法可以通过属性访问函数的返回值吗?

    我是一名 JS 开发人员 正在尝试函数式编程思想 我想知道是否可以按照 Promise 链的编写方式使用链来实现同步函数 例如 function square num return num num let foo 2 let a squar