2024年Clojure调查问卷中分享您的想法!

欢迎!请查看关于页面以获取更多关于如何操作的介绍。

0
Spec

有时如果你想快速检查局部数据的形状可能会很有帮助,例如在一系列转换之后。

可以吗?

那么是否可以为thread-first或thread-last的(某些)步骤提供规范呢?

作为一个随想,可能会有像这样的东西?

(->> xs
     ^:xs (map ...) ;; <- attaching spec for output via tag
      (filter ...)
      (remove ...)

2 条回答

0

被选中
 
最佳答案

不,按照您描述的目前方式,这不可能实现。然而,您可以使用一个接收规范和值的函数,检查值是否与规范一致,然后抛出异常或返回,然后再将其放置在->>链中,作为一个额外的线程函数。

可能可以通过新的宏使用元信息以您描述的方式完成类似的功能。

0
by

不算是回答,而是一种相当乏味的评论...我喜欢线程宏的代数性质。我会根据如何使它们的意图和效果最清晰的方式来调整形式进入和离开线程宏。将任何其他行为附加到线程宏将会引入复杂性。因为我可以在任何地方、任何时候使某物符合规范,实际上我通常不做,除非我有意进行故障排除,因此我更愿意在线程形式中插入一个步骤来做到这一点,这样即使我展开(展开)宏,行为也会相同。

by
目的是更多地描述数据形状,而不是转换。
...