clojure - Clojure 不知道如何创建 ISeq
问题描述
我解析 obj 文件并尝试用 f 替换顶点而不是序数。
示例 f:
[[{:v 1 :vt 1 :vn 1} {:v 2 :vt 2 :vn 2} {:v 3 :vt 3 :vn 3}]
...]
但我有错误
java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core$map$fn__5583
排队
{:v (nth v-list (dec v)) :vt (get vt-list (dec vt)) :vn (nth vn-list (dec vn))}
我该如何解决?谢谢。
我的代码:
(defn fill-vertex [{:keys [v vt vn]} v-list vt-list vn-list]
{:v (nth v-list (dec v)) :vt (get vt-list (dec vt)) :vn (nth vn-list (dec vn))})
(defn fill-triangle [triangle v vt vn]
(map #(fill-vertex % v vt vn) triangle))
(defn to-f-list [{:keys [f v vt vn matrix]}]
(let [v-u (->> v (map #(add-perspective % matrix) (map #(viewport %))))
vn-u (map #(add-perspective % matrix) vn)]
(map #(fill-triangle % v-u vt vn-u) f)))
解决方案
(->> v (map #(add-perspective % matrix) (map #(viewport %))))
是相同的
(map #(add-perspective % matrix) (map #(viewport %)) v)
但
(map #(viewport %))
不是一个序列,它是一个换能器函数。
您可能的意思是:
(->> v (map #(add-perspective % matrix)) (map #(viewport %)))
当您将多个操作放在一行上时,很难发现这种错误,因此我鼓励您使用换行符
(->> v
(map #(add-perspective % matrix))
(map #(viewport %)))
它使遵循这些步骤和分组变得更容易。
推荐阅读
- model-view-controller - MVC 应用程序的 HttpWebRequest 失败
- javascript - 全局未处理的拒绝处理程序
- codeigniter - 使用 Codeigniter 中的路由器类在方法中设置路由
- java - Kafka - 停止重试 ConnectException
- sql - SQL - 列值取决于另一列值是否出现在第三列中
- hyperledger-fabric - Hyperledger Fabric的nodejs sdk中的多用户身份
- html - CSS如何在悬停时突出显示表格中的两行?
- security - 在数据库本身加密的同时为数据库的其余部分存储对称密钥
- html - 创建一个不允许外部 CSS 影响内部元素的 div
- javascript - 如果响应数据为空且响应状态为 200,如何在 AngularJS 中重复 http 调用