Чтобы применить арность, например, 2, можно также использовать литерал подписи:
sub foo(&x:($,$)) {
x(1,2)
}
Тогда это работает:
foo -> $a, $b { say $a + $b }
Пока это умирает:
foo -> $a { say $a }
Этот сигнатурный литерал просто означает «любые два аргумента».Тип возврата также может быть ограничен с помощью аналогичных средств:
sub foo(&x:(--> Int)) {
say x()
}
Значение этого работает:
foo sub (--> Int) { 42 }
Но это умирает:
foo sub () { "oops" }