2024 Clojure 状态调查! 中分享你的想法。

欢迎!请访问 关于页面 了解更多关于如何使用本站的信息。

0
打印
{{pr}} 错误地将包含命名空间键的 structmap 表示出来。  {{pr}} 错误地说明了实际键的值,并且包含了幻影键。


user=> (pr-str (struct (create-struct :q/a :q/b :q/c) 1 2 3))
"#:q{:q/a nil, :q/b nil, :q/c nil, :c 3, :b 2, :a 1}"



在 Clojure 1.8 中它能正常工作,关闭 print-namespace-maps 特性似乎是解决问题的方法


user=> (binding [*print-namespace-maps* false]
         (pr-str (struct (create-struct :q/a :q/b :q/c) 1 2 3)))
"{:q/a 1, :q/b 2, :q/c 3}"



顺便提一下:在基础是匿名和计算(而不是编码)的或键顺序是基础的重要方面时,structmap(now as ever)是合适的。  人们有时引用参考文档中的声明,“ StructMaps 的许多用途现在可能由记录更好地服务”,但当然,它只是指那些实际上由记录更好地服务的用途。  记录类不能是匿名的,defrecord 需要在编译时获取基础;正常映射不显示预设的键顺序。  因此 structmaps 的继续相关性。

1 答案

0
参考: https://clojure.atlassian.net/browse/CLJ-2469 (由 alex+import 报告)
...