Format — 서식 지정 문자열에 맞춰 값을 문자열로 변환
Format — 서식 지정 문자열에 맞춰 값을 문자열로 변환
sprintf 호환 형식 문자열을 받아 값을 문자열로 만드는 일은 자주 겪는 패턴이에요. Format은 바로 그 변환 로직을 담은 불변(immutable) 객체예요. 모든 면에서 표준 문자열처럼 동작하지만, sprintf처럼 인자를 받아 문자열을 만들어내는 Callable로도 호출할 수 있다는 점이 다르죠.
이 클래스는 Rakudo 컴파일러의 2023.06 릴리스부터 사용할 수 있고, 언어 레벨 6.e이 필요해요.
use v6.e.PREVIEW;
my $f = Format.new("'%5s'");
say $f; # OUTPUT: «'%5s'»
say $f("foo"); # OUTPUT: «' foo'»
본문
메서드 (Methods)
method new
method new($format --> Format:D)
sprintf 호환 형식 문자열로부터 새 Format 객체를 만들어요.
use v6.e.PREVIEW;
my $d = Format.new("%05d");
say $d; # OUTPUT: «%05d»
say $d(42); # OUTPUT: «00042»
method Callable
method Callable(--> Callable:D)
주어진 형식으로부터 만들어진 Callable을 반환해요. 어차피 Format 객체를 직접 호출할 수 있으므로, 이 메서드는 주로 내부 검사(introspection) 용도로 쓰이게 돼요.
method directives
method directives(--> List:D)
주어진 형식에 등장하는 지시자(directive)들의 목록을 반환해요. 역시 내부 검사 용도예요.
use v6.e.PREVIEW;
my $d = Format.new("%05d%3x:%s");
say $d.directives; # OUTPUT: «(d x s)»
method arity
method arity(--> List:D)
이 형식을 만드는 데 필요한 최소한의 위치 인자 개수를 반환해요. 내부 검사 용도예요.
use v6.e.PREVIEW;
my $d = Format.new("%05d%3x:%s");
say $d.arity; # OUTPUT: «3»
method count
method count(--> List:D)
이 형식을 만드는 데 필요한 최대한의 위치 인자 개수를 반환해요. 내부 검사 용도예요.
use v6.e.PREVIEW;
my $d = Format.new("%05d%3x:%s");
say $d.count; # OUTPUT: «3»