lisp 中可以有哈希表吗?

2023-12-28

Lisp 中可以有哈希表或字典吗?我的意思是数据结构是对(键,值)的集合,其中可以使用键来访问值。


Common Lisp 至少有四种不同的方法来做到这一点(键值存储):

  • 属性列表 (:foo 1 :bar 2)
  • 关联列表 ((:foo . 1) (:bar . 2))
  • 哈希表
  • CLOS 对象 (slot-value foo 'bar) 来获取,(setf (slot-value foo 'bar) 42) 来设置。插槽名称可以存储在变量中: (let ((name 'bar)) (slot-value foo name)) 。

对于简单的使用,关联列表或属性列表都可以。当元素数量较多时,它们往往会变得“慢”。哈希表“更快”,但也有其自身的权衡。 CLOS 对象的使用方式与许多其他对象系统类似。键是 CLOS 类中定义的槽名称。尽管可以对可以在访问时添加和删除插槽的变体进行编程。

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

lisp 中可以有哈希表吗? 的相关文章

随机推荐

  • 将请求的响应保存到文件

    我在用着Requests http docs python requests org en latest api 将 PDF 上传到 API 它被存储为下面的 响应 我正在尝试将其写到 Excel 中 import requests fil
  • CSS 模块和多个布局/主题?

    在我的应用程序中 我有多种主题样式 您可以将它们视为不同的 单独的 CSS 样式文件 我想开始使用 CSS 模块 但我什至不知道如何使用import我的第一个文件 让我们假设以下 简单 目录结构 layouts themeA myCompo
  • char 指针数组和 int 指针数组之间的区别

    这是一道C题 我不明白为什么这段代码有效 char c hello world 但这并没有 int v 1 2 3 4 对我来说 它们是相同的东西 用各自类型初始化的指针数组 但显然它们不是 那么到底有什么区别呢 谢谢 编辑 如果对我的帖子
  • PayPal 初始化时出错

    我使用 ios 版 paypal 移动支付库 iPhone 5 01 iOS 我无法在我的应用程序中初始化 PayPal After PayPal initializeWithAppID APP 80W284485P519543T forE
  • 如何在 src 标签中连接两个字符串?

    这里我想将两个字符串连接在一个 img 标签 这个怎么做 img src partners item AdPath alt id adimg title item AdName width 50px height 50px gt 有什么建议
  • JavaScript 中的嵌套 while 循环

    我正在尝试制作一个带有嵌套的星星网格while loop 它确实适用于for loop for m 1 m lt 5 m for n 1 n lt 10 n document write document write br 但我不知道如何用
  • 在 Actionscript 中绘制三次贝塞尔曲线?

    在 AS3 中以编程方式绘制三次贝塞尔曲线的最佳方法是什么 这Graphics类似乎只支持二次曲线 我希望能够做类似的事情 var startPoint Point new Point 0 0 var endPoint Point new
  • Bookdown:导出到 Word 文档(files2[[format]] 中的错误:尝试在 get1index 中选择少于一个元素)

    我正在使用 bookdown 包和回忆录乳胶类来写我的论文 当我导出到 pdf 或 html 时 一切都相对正常 但我无法将论文导出到 word 文档 我收到以下神秘错误 Error in files2 format attempt to
  • Google:拒绝为不在本地主机上的目标域生成登录提示的权限

    我正在尝试创建 Google 登录并收到错误 拒绝为目标域生成登录提示的权限 在将其标记为重复之前 这是not与提出的问题相同Google 登录网站错误 生成目标域登录提示的权限被拒绝 https stackoverflow com que
  • 从 VS2012 远程调试 Win8 Surface 应用程序

    我正在尝试在 Microsoft Surface RT 平板电脑上的 VS2012 中调试 Windows 应用商店应用程序 桌面开发系统和 Surface 平板电脑位于同一子网 191 168 1 x 我已经在平板电脑上安装了适用于 AR
  • 每次编辑build.gradle文件Android studio都会冻结

    我正在使用 Android studio 3 1 Canary 3 和 gradle 4 3 1 我访问maven org非常慢 但是当我在Android studio中编辑build gradle文件时 它会向 因此 在编辑 build
  • cPickle 可以保存重塑的 numpy 对象引用吗?

    我有一个类定义为 class A def init self a np array 0 1 2 3 4 5 self b self a reshape 2 3 现在 b 实际上是数组 a 的重构引用 如果我们改变 a 的第一个元素 a 0
  • ALTER 表 - 在 MySQL 中添加自动增量

    我在 MySQL 中创建了一个带有 on 列的表itemID 创建表后 现在我想将此列更改为AUTOINCREMENT 如何使用 ALTER 语句来完成此操作 表定义 ALLITEMS itemid int 10 unsigned item
  • 你能用 Jquery 操作字符串中的数字吗? [复制]

    这个问题在这里已经有答案了 我有一些像这样的字符串 p It will vary from 100g to 200g p p 2lbs of meat p p 3 piles of timber p etc etc 我想增加 减少每个字符串
  • 如果我不关心特定编码,如何将 u8 切片打印为文本?

    当打印一个u8Rust 中的数组使用println some u8 slice 这会打印数值 正如它应该的那样 将字符按原样格式化为字符串的最直接方法是什么 不假设任何特定的编码 就像迭代字节字符串并将每个字符写入stdout 没有那么多麻
  • MySQL 二进制日志复制:可以设置为忽略错误吗?

    我正在运行一个主从 MySQL 二进制日志复制系统 唷 对于某些数据 该系统不同步 这意味着主服务器比从服务器保存更多的数据 但是从站经常因为最轻微的 MySQL 错误而停止 这可以禁用吗 可能是复制从站忽略复制错误或某些类似的 my cn
  • 如何停止网络音频脚本处理器并清除缓冲区?

    我正在尝试找出一种方法来阻止网络音频脚本处理器节点运行 而无需断开连接 我最初的想法是将 onaudioprocess 设置为 null 来停止它 但是当我这样做时 我听到了一个非常短的音频播放循环 我的猜测是音频缓冲区没有被清除或其他什么
  • Git 别名出错,但在 CLI 中运行它始终有效

    Running git commit amend no edit在 CLI 中工作 当我给它起别名时 在 zshrc alias gam git commit amend no edit 并运行它 gam fatal Stray git r
  • AspectJ @Before注释问题

    我在 AspectJ 实施方面遇到一些问题 我想为带有 MyAnnotation 注释的方法创建一个日志方法 MyAnnotation java Retention RetentionPolicy RUNTIME Target Elemen
  • lisp 中可以有哈希表吗?

    Lisp 中可以有哈希表或字典吗 我的意思是数据结构是对 键 值 的集合 其中可以使用键来访问值 Common Lisp 至少有四种不同的方法来做到这一点 键值存储 属性列表 foo 1 bar 2 关联列表 foo 1 bar 2 哈希表