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'␤»

출처: Raku Documentation — Format

본문

메서드 (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␤»