我需要创建一个带有键/值的数据结构来维护顺序。哈希值不保持顺序,因此我使用的是成对的数组。一切都按预期进行。但是,我想在将其添加到数组之前检查每对的类型。该对应始终为 Str => Int。
[0] > my Pair @list
[1] > @list.push: "Roma" => 1
[Roma => 1]
[2] > @list.push: "Paris" => 2
[Roma => 1 Paris => 2]
[3] > @list.push: "Lisboa" => 3
[Roma => 1 Paris => 2 Lisboa => 3]
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的东西my Int %list{Str}。任何想法?。
Jon*_*ton 11
它没有语法快捷方式,但您可以通过声明一个约束and of 的subset类型来实现,如下所示:keyvaluePair
[0] > subset PairStrInt of Pair where .key ~~ Str && .value ~~ Int;
(PairStrInt)
[1] > my PairStrInt @list;
[]
[2] > @list.push: "Roma" => 1
[Roma => 1]
[3] > @list.push: "Paris" => "2"
Type check failed for an element of @list; expected PairStrInt but got Pair (:Paris("2"))
in block <unit> at <unknown file> line 1
Run Code Online (Sandbox Code Playgroud)