Я определил multi sub
который имеет две подписи:
multi sub mie(Str $s, Int $i) { $s x $i }
multi sub mie(Int $s, Int $i) { ... }
say &mie.signature; # ;; Mu | is raw)
Я хочу получить подпись этого multi sub
, но результат выше не тот, который я ожидал.
Как сказано в документе, содержит многоуровневый метод, который имеет 4 подписи:
multi method contains(Str:D: Cool:D $needle)
multi method contains(Str:D: Str:D $needle)
multi method contains(Str:D: Cool:D $needle, Int(Cool:D) $pos)
multi method contains(Str:D: Str:D $needle, Int:D $pos)
Но когда я пытаюсь получить подпись содержит:
say "a string".^methods.pairs.values[8].value.signature;
Он выводит только одну подпись:
(Str: | is raw)
В REPL, когда я вызываю метод contains
без аргумента, он выдает следующую ошибку:
> "a string".contains()
Cannot resolve caller contains(Str: ); none of these signatures match:
(Str:D: Cool:D $needle, *%_)
(Str:D: Str:D $needle, *%_)
(Str:D: Cool:D $needle, Cool:D $pos, *%_)
(Str:D: Str:D $needle, Int:D $pos, *%_)
in block <unit> at <unknown file> line 1
Это указывает, что contains
метод действительно имеет 4 подписи! Я хочу знать, есть ли какие-либо методы, которые могут выводить всю подпись метода /multi?