Corso di Raku / Avanzato / Altro sui tipi predefiniti

Set, bag e mix

Oltre agli array e agli hash, Raku offre alcuni contenitori specializzati per collezioni di valori. Il più semplice è il Set — una collezione non ordinata di valori distinti, dove ogni valore è membro oppure no, e i duplicati vengono ignorati.

Si crea un set con la routine set. I valori ripetuti vengono ridotti a uno solo:

my $s = set(1, 2, 3, 2, 1);
say $s.elems; # 3

Anche se sono stati passati cinque numeri, il set contiene solo tre elementi, perché 1 e 2 compaiono più di una volta.

La domanda principale che si pone a un set è se un valore gli appartiene. L’operatore (che si legge “è un elemento di”) restituisce un booleano:

say 2set(1, 2, 3); # True
say 9set(1, 2, 3); # False

Se si preferisce restare con il semplice ASCII, lo stesso operatore può essere scritto come (elem):

say 2 (elem) set(1, 2, 3); # True

Gli argomenti seguenti mostrano come combinare i set e introducono i bag e i mix, che sono parenti stretti del set.

Argomenti di questa sezione

Pratica

Risolvi 1 quiz sul contenuto di questa sezione.

Esercizi

Questa sezione contiene 3 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.

  1. Contare i distinti
  2. Elementi comuni
  3. Contare in un bag

Soluzione: Giorno della settimana   |   Operazioni sui set