Formatter — 주어진 형식 사양에 맞춰 Callable 생성

Formatter — 주어진 형식 사양에 맞춰 Callable 생성

sprintf 호환 형식 문자열을 Callable로 바꿔주는 기능은 어디에 모아둘까 고민하게 되는 부분이에요. Formatter 클래스는 자기 자신의 인스턴스를 만들지는 않지만, 정확히 그 변환 기능의 접근 지점(access point) 역할을 해요. 즉 '형식 문자열 → Callable' 변환을 담당하는 클래스죠.

이 클래스는 Rakudo 컴파일러의 2023.06 릴리스부터 사용할 수 있고, 언어 레벨 6.e이 필요해요.

use v6.e.PREVIEW;
my &handle = Formatter.new("'%5s'");
say handle("foo");              # OUTPUT: «'  foo'␤»

출처: Raku Documentation — Formatter

본문

메서드 (Methods)

method new

method new($format --> Callable:D)

sprintf 호환 형식 문자열로부터 캐시된 Callable 객체를 반환해요. 한 번도 본 적 없는 형식 문자열이면 새 Callable 객체를 만들죠.

use v6.e.PREVIEW;
my &zero5 = Formatter.new("%05d");
say zero5(42);                  # OUTPUT: «00042␤»

method CODE

method CODE(--> Callable:D)

sprintf 호환 형식 문자열로부터 캐시 없이 Callable 객체를 반환해요. 캐싱이 중요하지 않거나 원치 않는 컴파일 타임 상황에서 쓰도록 만든 메서드예요.

method AST

method AST(--> RakuAST::Node:D)

sprintf 호환 형식 문자열에 대한 CallableRakuAST 표현을 반환해요. 디버깅 용도로 쓰게 돼요.

use experimental :rakuast