clojurescript线程宏嵌套向量问题

2023-12-23

这是我的功能

(defn foo
      []
      (->> (conj (:countries list1)                         ;; ["UK" "USA" "IND"]
                 (:countries list2)                         ;; ["AUS" "NZ"]
                 (:countries list3)                         ;; "FRA"
                 )
           (some-other-operations)))

评论显示了他们获取的数据,我希望我的结果是这样的

["UK" "USA" "IND" "AUS" "NZ" "FRA"]

但我不明白为什么它会给我这样的输出

["UK" "USA" ["AUS" "NZ"] "FRA"]

如果我删除 list2 它工作正常。然后它会产生这样的输出

["UK" "USA" "FRA"]

有人知道我该如何解决这个问题吗?


在我看来,根本问题是不规则的:countries值类型,在不同情况下是集合或原子。我的建议是确保:contries永远是收集和使用concat。如果您无法控制数据类型(这种情况经常发生),我建议使用实用程序串联函数,如下所示:

(defn concat* [& xs]
  (reduce (fn [acc x]
            ((if (sequential? x) into conj) acc x))
          [] xs))

user> (concat* ["UK" "USA" "IND"] ["AUS" "NZ"] "FRA")
;;=> ["UK" "USA" "IND" "AUS" "NZ" "FRA"]

至于我,我不鼓励使用flatten在生产代码中,因为当数据类型更改时可能会导致一大堆错误。

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

clojurescript线程宏嵌套向量问题 的相关文章

  • Haskell 中列表列表的笛卡尔积

    给定一个长度列表的列表x所有子列表的长度都相同y 输出y x长度列表x包含每个子列表中的一项 例子 x 3 y 2 1 2 3 4 5 6 Output 2 3 8不同的输出 1 3 5 1 4 5 1 3 6 1 4 6 2 3 5 2
  • 无法删除 IntelliJ/Cursive 中的括号

    我正在使用 IntelliJ Cursive 编写 Clojure 我发现 删除括号的唯一方法就是将其中的内容完全删除 然后才能将括号删除 例如 假设我有以下代码 list 我只想删除左括号 一旦我在左括号上按退格键 IDE 就会忽略此行为
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • 使用 CounterClockwise 和 Eclipse 在 Clojure REPL 中进行评估

    我通常使用 Emacs 但受到启发再次尝试 CCW Eclipse 我有一个 Clojure 测试项目 其源文件 src user clj 包含以下内容 ns user println hi 我有一个 REPL 我从 Window gt S
  • Clojure 宏expand

    Why does macroexpand arm getHand getFinger 扩展到 arm getHand getFinger while macroexpand gt arm getHand getFinger 扩展到 getF
  • @tailrec为什么这个方法不编译为“包含不在尾部位置的递归调用”?

    tailrec private def loop V key String V key match case gt loop key 此方法无法编译并抱怨它 包含不在尾部位置的递归调用 有人可以向我解释一下发生了什么事吗 这个错误消息对我来
  • 你能在 scala 中使用 varargs 柯里化一个函数吗?

    我正在考虑如何用可变参数柯里化一种方法 然后我意识到我什至不知道如何去做 理想情况下 它应该让您可以随时开始使用它 然后以可迭代结束 def concat strs String strs mkString val curriedConca
  • 在 clojure 中,使用递归实现宏时如何进行代码模板化

    我正在尝试实现一个宏 以递归地将中缀列表转换为前缀列表 我遇到一个问题如下 this works defmacro recursive infix form list second form first form if not seq nt
  • 使用 RxJava 限制吞吐量

    我现在遇到的情况很难解释 所以我会写一个更简单的版本来解释这个问题 我有一个Observable from 它发出一系列由ArrayList文件数量 所有这些文件都应上传到服务器 为此 我有一个函数可以完成这项工作并返回一个Observab
  • 如何在对象的多个方法上使用 functools.partial 并无序冻结参数?

    我发现 functools partial 非常有用 但我希望能够无序地冻结参数 您想要冻结的参数并不总是第一个 并且我希望能够将其应用于多个一次在类上使用方法 以创建一个代理对象 该对象具有与底层对象相同的方法 除了它的一些方法参数被冻结
  • 函数式语言中的部分求值和函数内联有什么区别?

    我知道 函数内联就是用函数定义代替函数调用 部分评估是在编译时评估程序的已知 静态 部分 在 C 等命令式语言中 两者之间存在区别 其中运算符与函数不同 但是 在像 Haskell 这样的函数式语言 其中运算符也是函数 中 两者之间有什么区
  • 从不带破折号的字符串创建 UUID

    如何从不带破折号的字符串创建 java util UUID 5231b533ba17478798a3f2df37de2aD7 gt uuid 5231b533 ba17 4787 98a3 f2df37de2aD7 tl dr java u
  • 如何在 Jetty 中以编程方式设置 gzip?

    我正在使用 Noir 和 clojure 编写一个网络应用程序 它使用 Jetty Jetty 有两种使用 gzip 的方法 一种用于静态 一种用于动态 它们在https stackoverflow com a 9113129 104021
  • 如何安装 leiningen 插件?

    如何安装 leiningen 插件 例如 leiningen run 我看到这个叫做 clojars org 的东西 以及如何 推 它 但我没有看到任何关于从中 拉 的东西 如果 Clojars 上有可用的插件 例如 lein run 只需
  • 相当于 Java 中 C++ 的 std::bind 吗?

    有没有一种方法可以像 C 中的 std bind 一样将 Java 中的参数绑定到函数指针 Java 中类似的东西会是什么 void PrintStringInt const char s int n std cout lt lt s lt
  • webjure 与 compojure?

    我听说过两个基于 Clojure 的 Web 应用程序框架 Webjure 和 Compojure 有人可以告诉我哪个更好吗 现在您可以添加Ring http groups google com group clojure browse t
  • 从函数返回随机值是副作用吗?

    我当时正在编写一些 F 代码 并且正在编写一个从一组字符串中返回随机字符串的函数 假设我有这样的事情 open System let a a b c d let rstring arr string let r new Random arr
  • 为什么我的字符串函数返回 clojure.lang.LazySeq@xxxxxx?

    我使用 leiningen REPL 定义了以下 3 个函数 defn rand int range floor ceiling floor rand int ceiling floor defn mutate index mutates
  • Scala 功能设计模式目录

    一周以来我一直在阅读 Scala 编程 作者一步一步地介绍了该语言的元素 但我仍然很困惑何时使用演员 闭包 柯里化等功能性的东西 我正在寻找功能结构的典型用例或最佳实践的目录 我并不是说在 Scala 中重新实现像 GoF 这样的众所周知的
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic

随机推荐

  • Google Doubleclick 响应中的“X-Frame-Options”标头无效

    我们使用 Google 的 doubleclick 来跟踪 IFrame 中具有 Floodlight 标记的用户信息 但最近该响应导致 Chrome 开发工具中出现错误 加载时遇到无效的 X Frame Options 标头http 12
  • Socket.io:如何处理服务器上的所有传入消息?

    我希望能够在单个处理程序中处理来自客户端的所有消息 客户端代码示例 var socket io connect http localhost socket emit news hello test socket emit chat hell
  • 当用户使用 UI-Router 转换到父状态时将用户定向到子状态

    考虑以下 state manager staffList url staff alpha templateUrl views staff list html data activeMenu staff controller staffLis
  • 使用同一查询的多个 PHP WHILE 循环

    query1 SELECT FROM idevaff affiliates affiliateID mysql query query1 or die mysql error 这是我上面的查询 我想将它用于两个 WHILE 循环 第一个位于
  • 如何判断我的日元符号是反斜杠还是日元?

    我有一个小程序 用于将反斜杠符号打印到 PDF 文件中 在大多数英语操作系统中 反斜杠显示为反斜杠 而我的程序运行得很好 但是 在日本操作系统或韩国操作系统中 我的程序开始出现问题 在这些操作系统中 反斜杠显示为日元或韩元符号 但我的程序将
  • 在 R 中绘制多元回归的“回归线”

    我用几个连续预测变量进行了多元回归 其中一些结果很重要 我想创建一个 DV 的散点图或类似散点图one预测变量 包括 回归线 我怎样才能做到这一点 我的情节看起来像这样 D my data plot D probCategorySame D
  • SSRS如何渲染HTML转义字符

    我正在尝试渲染一个包含大量 HTML 转义字符的列 例如 表示 alpha 表示 beta 我使用 SSRS 2012 的占位符属性将其呈现为 HTML 标记类型 此功能看起来仅适用于 HMTL 标签 不适用于转义字符 任何反馈表示赞赏 右
  • 我可以将字符串作为 stdin 传递给 vim 的系统调用吗?

    我想从 vim 运行系统命令 help 并且我想将字符串变量的内容作为该命令的标准输入传递 我已经知道我可以将当前缓冲区中的行作为标准输入传递 https stackoverflow com q 7867356 1523582 see he
  • 使用 Path.GetTempFileName 创建的文件会自动清理吗?

    我一直认为答案是肯定的 但现在我正在努力寻找真相 当我使用创建临时文件时Path GetTempFileName Windows 稍后会自动清理吗 如果我在下面创建一个目录呢 Path GetTempPath windows 会清理它吗 或
  • MATLAB 运算符作为函数

    我只是好奇MATLAB中的所有运算符是否在内部都是作为函数实现的 我们为几乎所有 MATLAB 运算符提供了等效函数 plus for minus for eq for and transpose for 大多数运算符都是由函数表示的 是的
  • 关于 JTextField 和带有数字的文本格式的问题?

    我使用 Swing 编写一个应用程序 我的应用程序有一个文本框 我想要做的是 当用户在该文本字段中输入数字时 如果该数字是数千 则它会自动在数字中附加一个逗号 例如 如果用户输入 1000 那么它应该自动更改为 1 000 或 1 000
  • Spark Worker 关闭 - 如何释放共享资源

    Spark手册中推荐使用共享静态资源 例如连接池 在工作代码内 示例来自manual http spark apache org docs latest streaming programming guide html design pat
  • docker swarm模式多个服务同一端口

    假设您的拓扑上有两个服务 API 网页界面 两者都假设在端口 80 上运行 在 docker swarm 上 当您创建服务时 如果您想在集群外部访问它 您需要公开并将端口从服务映射到节点 外部端口 但是 如果您将端口 80 映射到 API
  • React-redux 创建数组时重新渲染

    我有一个连接的组件 我想在其中检索对象数组 在我的商店中 有一个 id 数组和一个用于保存项目的对象 如下所示 const state items 0 1 2 itemsById 0 1 2 所以使用connectReact Redux 的
  • UPDATEIFCOPY 标志是否为真?

    我正在尝试更深入地理解 numpy 数组 特别是内存布局 所有权 共享相关方面 在此过程中 我偶然发现了 UPDATEIFCOPY 标志 这听起来很有趣 只是我从未真正见过它 用户只能unset https docs scipy org d
  • C#中需要接口

    C 中需要什么接口 当我们在接口中编写抽象方法时 相反 我们可以直接在类中实现这些方法 接口不支持实现 因此您无法像抽象类那样提供任何默认实现 此外 接口不限于层次结构 因此它们比抽象类更灵活
  • 解释一下导致 HashMap.put() 执行无限循环的时机

    正如许多人已经注意到和遇到的那样HashMap put并发使用时可能会进入无限执行循环 请参阅灰熊 1207 https github com javaee grizzly issues 1207 JGRP 525 https issues
  • 减去日期即可得到天数

    我正在尝试编写一个 php 代码 它将能够减去两个日期并获取两个日期之间的天数 我想出的代码如下
  • Exo 播放器无法播放 url 中的视频

    我第一次尝试集成 ExoPlayer 确切地说 我尝试遵循一些教程 但视频甚至无法播放 所以我查阅了文档 但它仍然无法播放 当我检查日志时发现这个异常 E MediaCodec Codec reported err 0x80001001 a
  • clojurescript线程宏嵌套向量问题

    这是我的功能 defn foo gt gt conj countries list1 UK USA IND countries list2 AUS NZ countries list3 FRA some other operations 评