【发布时间】:2018-05-20 21:59:35
【问题描述】:
我正在寻找解释为什么这两个数据结构不相等:
$ perl6 -e 'use Test; is-deeply [ { a => "b" } ], [ { a => "b" }, ];'
not ok 1 -
# Failed test at -e line 1
# expected: $[{:a("b")},]
# got: $[:a("b")]
Hashes 和 Arrays 中的尾随逗号没有意义,就像在 P5 中一样:
$ perl6 -e '[ 1 ].elems.say; [ 1, ].elems.say'
1
1
但如果没有它,Hash 会以某种方式丢失,并且会被展平为 Pairs 数组:
$ perl6 -e '[ { a => "b", c => "d" } ].elems.say;'
2
我怀疑这里适用一些伟大的列表重构法则,但我想获得更详细的解释以了解这种扁平化背后的逻辑。
【问题讨论】: