按关键字进行惯用的 clojure 映射查找

2023-12-14

假设我有一个使用关键字作为键的 clojure 映射:

(def my-car {:color "candy-apple red" :horsepower 450})

我知道我可以通过使用关键字或映射作为函数并将另一个作为其参数来查找与关键字关联的值:

(my-car :color)
; => "candy-apple red"
(:color my-car)
; => "candy-apple red"

我意识到这两种形式在某些情况下都可以派上用场,但是其中一种形式是否被认为更适合如上所示的直接使用?


(:color my-car)是相当标准的。造成这种情况的原因有几个,我不会一一详述。但这里有一个例子。

Because :color是一个常数,并且my-car不是,hotspot完全可以内联动态调度color.invoke(m),它不能这样做m.invoke(color)(在一些java伪代码中)。

如果这样的话那就更好了my-car有时碰巧是一条记录color字段而不是普通映射:clojure 编译器可以发出代码来检查“嘿,如果my-car是 CarType 的一个实例,然后返回my-car.color;否则进行所有复杂、缓慢的哈希图查找。”

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

按关键字进行惯用的 clojure 映射查找 的相关文章

随机推荐

  • Keras 和错误:使用序列设置数组元素

    我在神经网络中输入多个数据源时遇到问题 我的数据框是 0 1 2 3 4 0 True True False 3 1 False True True 1 输入与前 4 列相关 输出与最后一列相关 当我训练我的神经网络时 我得到Setting
  • 如何自定义 LESS 生成的 CSS 以包含 Font Awesome?

    我要定制引导程序的CSS通过分层字体真棒作为替代品Bootstrap 默认字形 如何自定义 LESS 生成的 CSS 以包含 Font Awesome 并且在更新核心 Bootstrap 文件时不会中断 Note Font Awesome
  • 连接到我的程序时出现奇怪的行为

    我正在使用 Twisted 来实现某种服务器 当我测试它时 它收到的第一行总是很奇怪 Starting Server New connection from 192 168 1 140 192 168 1 140 NAME Blurr 19
  • 在 SQL Server 中,如何通过链接服务器连接查询 Oracle Timestamp 列?

    我在 oracle 中进行的查询不适用于带有 sql server 2008 的链接服务器 为链接服务器 ORACLE 提供的 OLE DB 提供程序 MSDAORA 列 DATETIME INS 的元数据无效 数据类型不是 支持的 查询
  • 终极清洁/安全功能

    我有很多用户输入 GET and POST 此刻我总是写mysql real escape string GET var 我想知道你是否可以制作一个功能来保护 转义和清理 GET POST立即数组 因此您不必每次处理用户输入等时都处理它 我
  • 实体框架存储过程和 POCO

    我需要有关使用 Entity Framwork 4 x 存储过程将数据返回到 POCO 对象的建议 我不想将数据从实体对象复制到 POCO 对象 我想执行一个存储过程并将数据直接加载到我的 POCO 类中 有没有办法做到这一点 我是否需要像
  • Collections.sort(...) 是如何工作的?

    需要明确的是 我试图找出 Collections sort list new MyComp 方法如何按顺序调用比较方法 我有一个包含员工及其个人号码 k 的 LinkedList 数字是 1 2 3 4 5 6 MyComparator 中
  • Drupal 共享表,但来自另一个数据库

    我有一个包含数百个站点的 Drupal Multisite 我想共享一些表格 例如横幅和角色 这样我就不必在更改横幅时更新数百个站点 例如 我知道这可以使用 settings php 中的这些字符串来完成 db url mysql user
  • JTextArea 中特定文本的 ActionListener?

    我的应用程序中有一个聊天组件 其中有一个JTextArea在上面 现在 如何为特定文本 例如student xxxx 添加类似ActionListener 的事件 因此 当我单击该文本 student xxxx 时 就会发生一些事情 谢谢
  • Spring Boot 和 Spring Data:Hibernate 会话如何管理?

    我目前正在开发一个使用 Spring Boot 和 Spring Data 的应用程序 其JpaRepository接口 准确地说 是与 Hibernate 一起使用 我喜欢 Hiberante 的一件事是它的缓存功能 当您提交与特定对象匹
  • 调用 Web 浏览器上下文菜单

    我正在开发一个项目 一个 Web Bot 它使用 WebBrowser 控件 我的目标是以编程方式在加载的 Web 浏览器中的所需元素上打开 Web 浏览器上下文菜单 然后从上下文菜单中选择一个选项 Example 在 WebBrowser
  • 创建引用数组

    如果我有一个类 A 并且我将这个类的 10 个元素的数组声明为 A arr new A 10 然后A的10个新对象被创建并存储在数组中 但是 我希望能够做一些事情A arr 10 其中数组仅保存对空对象的引用 我需要这个的原因是因为我只需要
  • 快速算法实现对非常小的列表进行排序

    这是我很久以前遇到的问题 我想我可以问问你的想法 假设我有一个非常小的数字 整数 列表 4 或 8 个元素 需要快速排序 最好的方法 算法是什么 我的方法是使用最大 最小函数 10 个函数对 4 个数字进行排序 无分支 iirc s i j
  • 为什么使用 SetUnhandledExceptionFilter 时堆栈遍历无法正常工作?

    我使用以下代码在异常时遍历堆栈 note 您必须在发布版本中运行它 以便正确地将堆栈跟踪的所需输出接收到控制台 而不是在调试模式下运行 否则它只会显示弹出窗口 include stdafx h include
  • MPI - 工作/池示例

    有没有为 MPI 使用工作 池 或生产者 消费者 方案的示例 至于我所做的一切 我只得到一个正在通过的应用程序 然后我的应用程序陷入僵局 Thanks 只要在谷歌上搜索 MPI Master Worker 或 MPI Master Slav
  • AttributeError:QDialog对象没有属性setCentralWidget

    我正在尝试使用 QT Designer 创建 GUI 我已使用以下教程将 ui 设计器文件转换为 py 文件 http pyqt sourceforge net Docs PyQt5 designer html 我有以下代码 Created
  • 如何知道我的 WPF 应用程序可以播放哪些视频格式?

    我有一个允许播放视频的小应用程序 首先 我不限制用户选择特定类型的文件 我想要做的是确保我可以播放用户选择的文件 如何获取可用编解码器的列表 或查询 WPF 应用程序的播放质量 MediaElement控制 建议的替代方案是在播放之前将任何
  • 使用 Java 8 中的泛型方法对集合进行排序

    以下方法执行排序 public List
  • 每次需要重新绘制时,如何抓取 qwidget /将其渲染在像素图中?

    我有一个 QWidget 我不想在屏幕上显示 相反 我想在每次重新绘制小部件时获取该小部件的像素图 以便将其发送到我正在处理的应用程序的另一部分 API 提供了两种方法来执行此操作 QPixmap grabWidget and QWidge
  • 按关键字进行惯用的 clojure 映射查找

    假设我有一个使用关键字作为键的 clojure 映射 def my car color candy apple red horsepower 450 我知道我可以通过使用关键字或映射作为函数并将另一个作为其参数来查找与关键字关联的值 my