codes — 문자열의 코드포인트 개수 세기

codes — 문자열의 코드포인트 개수 세기

문자열의 '길이'가 항상 그 안에 들어 있는 문자 수와 같지는 않아요. 특히 유니코드에서는 그렇죠. codes는 문자열 안에 있는 유니코드 코드포인트(code point)의 개수를 돌려주는 루틴이에요.

출처: Raku 공식 문서 — codes

본문

In Cool

sub codes(Str(Cool))
method codes()

invocant(서브 형태라면 그 인자)를 Str로 강제한 뒤, 그 안에 들어 있는 유니코드 코드포인트의 개수를 돌려줘요.

say 'møp'.codes;    # OUTPUT: «3␤»

'ø'도 하나의 코드포인트로 세기 때문에 møp는 3으로 나와요. 같은 결과를 얻는 다른 방법도 있어요.

say +'møp'.ords;    # OUTPUT: «3␤»

ords가 먼저 실제 코드포인트들을 얻어내기 때문에, 속도 면에서는 차이가 있을 수 있어요.

In Uni

method codes(Uni:D: --> Int:D)

invocant 안에 있는 코드포인트의 개수를 돌려줘요. Uni 타입에서도 codes는 같은 역할을 하지만, 반환 형태가 Int:D로 정의되어 있어요.