Clojure 应用映射和关键字参数销毁

2024-02-18

考虑具有以下签名的函数:

(defn make-widget [& {:keys [x y] :or {x 10 y 20}}]
 ...)

将映射传递给函数的最佳方法是什么,例如:

(make-widget {:x 100})

or

(make-widget {:y 200 :x 0})

我目前想到的是通过vec, flatten and apply e.g.:

(apply make-widget (flatten (vec ({:x 100}))

我坚信有更好的方法来做到这一点。您能考虑一下吗?


我也想不出一种更优雅的方式,尽管在我看来应该有一种(比如特定于地图的变体)apply).

Using flatten不过,除了不够优雅之外,还有一些问题。如果你的地图的值是集合,flatten也会递归地处理这些,所以事情可能会完全混乱。这个替代方案可以避免这个问题:

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

Clojure 应用映射和关键字参数销毁 的相关文章

  • Android 中识别点击的图像区域?

    有没有办法在 Android 应用程序中确定用户单击了 ImageView 的哪个区域 例如 x y 坐标 谢谢 查看运动事件 http developer android com intl de reference android vie
  • 检测 Android 中 OSM Mapview 是否仍在加载

    我已将 Open Street Maps 包含在我的 Android 应用程序中 在地图视图中 用户应该能够在地图完全加载后捕获屏幕 但目前 即使地图视图仍在加载 用户也可以捕获图像 有人可以告诉我如何检测地图视图何时完全加载吗 下面是我加
  • Redux Spread 运算符与 Map

    我有一个数组中的对象状态 在我的 ReduxReducer 中 const initialState items id 1 dish General Chicken price 12 1 quantity 0 id 2 dish Chick
  • 什么时候会在 dict 上使用键值对作为 dict.update 方法?

    我注意到你可以做两件事来更新字典 并且它们似乎有相同的结果 a a update foo 1 a a update foo 1 两者都会产生如下所示的字典结果 foo 1 是否有任何理由更喜欢使用字典或键 值对作为更新方法 它们在功能上是否
  • 将向量作为绑定传递给 for 宏时出现问题

    我有任意数量的列表 我想使用 for 宏来处理它们 我想创建一个传递向量作为绑定的函数 因为列表的数量各不相同 如果我对绑定进行硬编码 它会按我的预期工作 gt def list1 pink green gt def list2 dog c
  • Python 中的“Zip”列表字典

    我有一个列表字典 我想将它们合并到一个命名元组列表中 我想要第一个元组中所有列表的第一个元素 第二个元组中的第二个元素 依此类推 Example key1 1 2 3 key2 4 5 6 key3 7 8 9 我希望生成的列表如下所示 k
  • Clojure Web 应用程序 - 我从哪里开始?

    最近我一直在研究 Clojure 我喜欢这门语言 我想看看我是否可以在其中制作一个小型网络应用程序 只是为了挑战自己 但是 我完全没有设置任何与 Java 相关的 Web 应用程序的经验 事实上 我对 Java 并没有太多的经验 我从哪说起
  • 是否可以在三元表达式上只放置一个选项?

    我只是好奇这是否可能 或者是否有办法使它成为 C 的有效语法 expression value do nothing here or put some empty block like SomeClass SomeMethod Edit 为
  • Emacs/Swank/Paredit for Clojure 的温和教程

    我要转向 Emacs 来工作Clojure http en wikipedia org wiki Clojure Lisp 为了能够执行以下操作 我需要在 Emacs 上设置哪些信息 自动匹配 生成相应的右括号 自动缩进 Lisp Cloj
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 枚举和 Clojure

    在Java C世界中 人们经常使用枚举 如果我使用的是使用枚举的 Java 库 我可以在它们和关键字之间进行转换 例如 使用 java lang Enum valueOf e aget Ljava lang Enum e getEnumCo
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • 如何将 Python 字典序列化为字符串,然后再序列化回字典?

    如何将 Python 字典序列化为字符串 然后再序列化回字典 字典中将包含列表和其他字典 这取决于您想用它做什么 如果您只是想保存它 您应该使用pickle https docs python org 3 library pickle ht
  • “swank-clojure”到底是做什么的,我们有“swank-SOMETHING_ELSE”吗?

    我的肤浅理解是 swank clojure 使 M x slime connect 成为可能 我的意思是 它提供了与 clojure 服务器的连接 例如 lein swank 我的理解正确吗 如果不是 那swank的目的是什么 那么 是否有
  • 如何在 Clojure 中链接 Promise

    在 Scala 中 您可以使用map and flatMap在未来的成功结果上运行函数 val x Future Int val y Future String x map toString 有没有比以下更好的 Clojure 类似物 de
  • 在 VBA 中按键对字典进行排序

    我使用 VBA 创建了一个字典CreateObject Scripting Dictionary 将源单词映射到要在某些文本中替换的目标单词 这实际上是为了混淆 不幸的是 当我按照下面的代码进行实际替换时 它将按照源单词添加到字典中的顺序替
  • 使用 for 循环填充 python 字典列表

    我试图用 for 循环填充字典列表 但最终结果显示 for 循环填充的最后一个字典覆盖了所有先前字典的值 我尝试调整以下中提出的解决方案 如何使用循环填充 Python 字典 https stackoverflow com question
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • 使用 CounterClockwise 和 Eclipse 在 Clojure REPL 中进行评估

    我通常使用 Emacs 但受到启发再次尝试 CCW Eclipse 我有一个 Clojure 测试项目 其源文件 src user clj 包含以下内容 ns user println hi 我有一个 REPL 我从 Window gt S
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map

随机推荐

  • Ruby 中的时间范围?

    我想知道某个时间是否属于schedule或其他 就我而言 用于计算time is in 夜间时间表 or 正常时间表 我已经找到了这个解决方案 NIGHT 21 00 06 00 def night date date str date s
  • 如何在 Visual Studio Code 中将 python 作为主模块运行

    如何在 Visual Studio Code 中运行 python主模块 从命令行我会使用 m开关 比如 python m program py 我需要这个才能使相对导入工作 有什么我可以添加到的launch json file 如果这是不
  • git svn fetch '运行上下文时出错:软件导致连接中止...'

    几个月前 我 GIT 克隆了一个大型 SVN 存储库 6GB 大约 10 个分支 3 年的每日日志 克隆花了很多小时才完成 多次停止 不得不继续git svn fetch 与此同时 由于其他项目变得更加优先 SVN 到 Git 的迁移被搁置
  • 协议映射器在 Keycloak 中如何工作?

    我正在尝试一个示例来将用户属性添加到声明中 我正在按照这个例子here https www baeldung com keycloak custom user attributes 我正在尝试访问过滤器中的声明 但没有成功 我想了解协议映射
  • spring - 使用谷歌番石榴缓存

    我试图在我的 Spring 应用程序中使用谷歌番石榴缓存 但结果永远不会缓存 这是我的步骤 在conf文件中 EnableCaching Configuration public class myConfiguration Bean nam
  • 如何解释“grid-template-rows: auto auto 1fr auto”?

    最近 我使用创建了一个布局CSS grid https www w3 org TR css grid 1 虽然这很有效 但我对它的工作原理感到困惑 具体来说 我对这条线感到困惑grid template rows auto auto 1fr
  • 使用 Logback MDC 进行 Spring Boot ErrorController 日志记录

    更新 我的问题似乎与this one https stackoverflow com q 55146885 4506703 但没有有效的答案 我正在尝试登录 Spring BootErrorController 但它的日志没有 MDC 值
  • Swift 可变字典被视为不可变

    我正在尝试实施应用内购买 并且正在跟踪用户通过哪些购买进行了购买NSUserDefaults 我有一个设置每次购买的值的函数 但是当它运行时 我收到一条错误消息 指出我正在改变购买值的字典 即使该字典是用var代替let并且是一个NSMut
  • Windows Phone中如何设置TextBlock的背景图片?

    我在 Windows Phone 中设置文本块背景时遇到问题
  • Java 中双精度值的四舍五入

    目前我正在使用 DecimalFormat 类来舍入双精度值 double d 42 405 DecimalFormat f new DecimalFormat 00 System out println f format d output
  • Swagger 编辑器如何指定请求正文(POST)中的哪些字段是必需的?

    我正在尝试在在线 Swagger 编辑器中的用户类上定义 POST 方法 我希望能够在请求正文中指定多个字段 并且我希望生成的文档能够反映只有 2 个字段是必需的 其他是可选的 我必须做什么 改变才能做到这一点 我已经尝试过使用 requi
  • 管理 mnesia DBMS 中的增量计数器?

    我意识到 mnesia 不像 MySQL 或其他 RDBMS 那样支持自动增量功能 mnesia 文档中谈到的计数器并没有得到很好的解释 例如 到目前为止 我在整个文档中发现了一个操作计数器的函数 mnesia dirty update c
  • 检查 Python 列表中是否存在某个键

    假设我有一个可以包含一个或两个元素的列表 mylist important comment or mylist important 然后我想要一个变量作为标志 具体取决于第二个值是否存在 检查第二个元素是否存在的最佳方法是什么 我已经使用了
  • 流式操作符与延迟执行有何不同?

    In LINQ Where是一个流媒体运营商 然而OrderByDescending是一个非流操作符 AFAIK 流媒体运营商仅收集下一个必要的项目 非流式运算符立即评估整个数据流 我看不出定义流操作符的相关性 对我来说 延迟执行是多余的
  • 如何将 autoconf/automake 指向非标准包

    我正在尝试在 RedHat Linux 机器上构建 ZooKeeper ZooKeeper 到底是什么可能并不重要 当我按照包装说明进行操作时 我得到 autoreconf if aclocal configure ac 33 warnin
  • 使用RabbitMQ(Java客户端),有没有办法确定消费期间网络连接是否关闭?

    我在 RHEL 5 3 上使用 Java 客户端使用 RabbitMQ 我有 2 个节点 机器 Node1 正在使用 Java 帮助器类 QueueingConsumer 消费 Node2 上队列中的消息 QueueingConsumer
  • 在 R SF 中交叉大型空间数据集

    我有两个空间数据集 一个数据集包含许多多边形 总共超过 150k 指定不同的特征 如河流 植被 另一个数据集包含更少的指定不同区域的多边形 500 我需要将这两个数据集相交以获得不同区域的特征 我可以根据不同的特征对第一个数据集进行子集化
  • 需要从汇编中的字符串中删除所有非字母元素

    通过编写此汇编代码 我无法使用此选项来删除非字符字母 它将遍历字符串并进行所有比较 然后显示相同的字符串 且不删除任何非字符 我正在尝试将字母字符放入 tempString 中 然后将其移动到 edx 进行显示 它接受一个字符串并删除所有非
  • 我的代码是否阻止目录遍历?

    来自 Python WSGI 应用程序的以下代码片段可以安全地进行目录遍历吗 它读取作为参数传递的文件名并返回指定的文件 file name request path params file file open file name rb m
  • Clojure 应用映射和关键字参数销毁

    考虑具有以下签名的函数 defn make widget keys x y or x 10 y 20 将映射传递给函数的最佳方法是什么 例如 make widget x 100 or make widget y 200 x 0 我目前想到的