Perl6에서 선택적 플래그를 사용하는 함수를 구현하려면 어떻게해야합니까? 예를 들어, 나는이처럼 내 함수를 호출 할 말 : Perl6 선택적 함수 플래그
format 'a b c';
또는 같은
:format :pretty 'a b c';
내가 어떻게 할 수 있습니까? 감사합니다
Perl6에서 선택적 플래그를 사용하는 함수를 구현하려면 어떻게해야합니까? 예를 들어, 나는이처럼 내 함수를 호출 할 말 : Perl6 선택적 함수 플래그
format 'a b c';
또는 같은
:format :pretty 'a b c';
내가 어떻게 할 수 있습니까? 감사합니다
플래그의 경우 부울 값의 경우 그냥 명명 된 인수 일뿐입니다. 이것은 모두 :pretty
이 :pretty(True)
(pretty => True
) 쌍의 구문 설탕이기 때문에 모두 작동합니다.
당신은 부울 값
sub format($arg, Bool :$pretty = False) {
if $pretty { ... }
else { ... }
}
을 사용하거나 첫 번째 예에서는 멀티 파견
multi format($arg) { ... }
multi format($arg, Bool :$pretty!) { ... }
에 대한 입지를 사용할 수 있습니다, 우리가 정말 필요하지 않은 (디폴트 값을 제공 정의되지 않은 값은 False
으로 boolifies하지만 논란의 여지는 있지만 의미 상으로는 '옳은 일'입니다.) 두 번째 항목에서는 !
을 추가하여 필수 매개 변수로 지정했습니다.
또한 명명 된 인수는 여전히 쉼표로 구분해야 할 당신이 정말로 이상한 구문, 당신은 운영자와 일부 subsignature 마법을 사용할 수 원하는 경우
format :pretty, 'a b c';
으로 사용할 것, 즉 있습니다. Bool
메서드는 선택 사항이며 클래스 Pretty
은 비어있을 수 있습니다. MMD 디스패처가 잡을 수있는 무언가를 제공하기 만하면됩니다.
class Pretty { method Bool {True} };
sub prefix:<:pretty>(|c){ Pretty.new, c };
multi sub format((Pretty:D $pretty, |a)){ dd $pretty.Bool, a };
multi sub format(|c){ dd c };
format :pretty 'a b c'; format 'a b c';
# OUTPUT«Bool::True\(\("a b c"))\("a b c")»