my %data = :compras[
{
:produtos[
{
:2qtd,
:valor-unitário(12.34),
},
{
:1qtd,
:valor-unitário(3.99),
},
{
:3qtd,
:valor-unitário(98.14),
}
]
},
{
:produtos[
{
:6qtd,
:valor-unitário(12.34),
},
{
:1qtd,
:valor-unitário(3.99),
},
{
:1qtd,
:valor-unitário(34.02)
}
]
}
];
multi calc(
% (
Int :$qtd = 1,
Rat() :$valor-unitário!,
|
)
) {
$qtd * $valor-unitário
}
multi calc(@data) {
[+] @data.map: &calc
}
multi calc(% (:@compras!, |)) {
calc @compras
}
multi calc(% (:@produtos!, |)) {
calc @produtos
}
say calc %data