Raku의 allocate — 크기만 정해 Blob 만들기

Raku의 allocate — 크기만 정해 Blob 만들기

바이트 버퍼를 쓸 때 요소 수만 정해진 채로 비어 있는 Blob을 만들고 싶다면 allocate를 써요. 지정한 개수의 요소를 갖는 새 Blob을 돌려주고, 필요하면 채울 값까지 정할 수 있어요.

출처: Raku 공식 문서 — routine allocate

시그니처

multi method allocate(Blob:U: Int:D $elements)
multi method allocate(Blob:U: Int:D $elements, int $value)
multi method allocate(Blob:U: Int:D $elements, Int:D \value)
multi method allocate(Blob:U: Int:D $elements, Mu:D $got)
multi method allocate(Blob:U: Int:D $elements, int @values)
multi method allocate(Blob:U: Int:D $elements, Blob:D $blob)
multi method allocate(Blob:U: Int:D $elements, @values)

첫 인자 $elements는 만들 Blob의 요소 개수예요. 두 번째 인자는 선택인데, Blob을 채울 패턴을 나타내요. 한 개의(네이티브일 수도 있는) 정수값이거나, 정수를 만들어 내는 어떤 Iterable(다른 Blob 포함)이 될 수 있어요. 패턴으로 채울 값이 전체를 채우기에 부족하면, 그 패턴이 반복돼요.

예시

my Blob $b0 = Blob.allocate(10,0);
$b0.say; # OUTPUT: «Blob:0x<00 00 00 00 00 00 00 00 00 00>␤»

10개 요소에 0을 채워 넣은 모습이에요.

한 가지 주의할 점은, 패턴이 일반적인 Mu 값(즉 정수로 해석되지 않는 값)이면 allocate가 실패해요.