Raku의 BagHash — 객체를 BagHash로 강제하기

Raku의 BagHash — 객체를 BagHash로 강제하기

가중치 있는 컬렉션인 BagHash는 중복 횟수를 센 Bag의 가변(mutable) 버전이에요. BagHash 메서드는 여러 타입의 객체를 BagHash로 강제(coerce)해 줘요. Bag 메서드와 동작이 거의 같지만 목표 타입이 BagHash라는 차이가 있어요.

출처: Raku 공식 문서 — BagHash

본문

In Any

method BagHash(--> BagHash:D) is nodal

호출한 객체를 BagHash로 강제해요. Positional 객체는 값들의 목록으로 취급돼요.

In role Setty

method BagHash(Setty:D: --> BagHash:D)

호출한 객체의 원소들을 담은 BagHash를 돌려줘요.

my BagHash $b = Set.new(1, 2, 3).BagHash;
say $b; # OUTPUT: «BagHash(1 2 3)␤»

In MixHash

method BagHash (--> BagHash:D)

MixHashBagHash로 강제해요. 가중치가 Int로 변환되는데, 일부 가중치가 음수이거나 0으로 잘리면 결과 BagHash의 키 수가 원래 MixHash보다 적어질 수 있어요.

In Mix

method BagHash (--> BagHash:D)

MixBagHash로 강제해요. 가중치가 Int로 변환되고, 일부 가중치가 음수이거나 0으로 잘리면 결과 BagHash의 키 수가 원래 Mix보다 적어질 수 있어요.