【发布时间】:2017-07-19 01:32:13
【问题描述】:
我需要使用 perl 比较深度嵌套的数据结构。 这些结构可以包含标量、数组和散列。 我更喜欢 XS 实现。 数据最初以 JSON 形式到达。
在数据模式中,数组内的项目顺序无法保证,因此难以比较。
我尝试了 Test::Deep。当唯一的数组位于顶层时,该方法很容易,但当不区分顺序的数组嵌套在结构中更深时,该方法就很重了。
【问题讨论】:
-
您心目中的比较类型是什么?检查数据结构是否相同?所有数组元素都相等,并且所有哈希键都匹配?
-
是的,比较所有项目/哈希是否具有相同的键/值。包含相同元素的所有数组顺序不敏感。该方法获得 2 个引用(很像 Test::Deep)并计算出类型、嵌套和拓扑本身。差异应该可以退货或至少记录下来。
-
数组可以包含除标量以外的其他东西吗? IE。子数组或哈希?如果是这样,您如何确定正确的顺序?例如。应该将哪个数组 ref 与哪个数组 ref 进行比较?