Я определил 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 метода?