# role Setty

Common role for collections of distinct objects

class Setty does QuantHash { }

A role for collections which make sure that each element can only appear once. See Set and SetHash.

# Methods

## method grab

method grab($count = 1)

Removes and returns `$count`

elements chosen at random (without repetition) from the set.

If `*`

is passed as `$count`

, or `$count`

is greater than or equal to the size of the set, then all its elements are removed and returned in random order.

Only works on mutable sets; When used on an immutable set, it results in an exception.

## method grabpairs

method grabpairs($count = 1)

Removes `$count`

elements chosen at random (without repetition) from the set, and returns a list of `Pair`

objects whose keys are the grabbed elements and whose values are `True`

.

If `*`

is passed as `$count`

, or `$count`

is greater than or equal to the size of the set, then all its elements are removed and returned as `Pair`

s in the aforementioned way in random order.

Only works on mutable sets; When used on an immutable set, it results in an exception.

## method pick

multi method pick($count = 1)

Returns `$count`

elements chosen at random (without repetition) from the set.

If `*`

is passed as `$count`

, or `$count`

is greater than or equal to the size of the set, then all its elements are returned in random order.

## method roll

multi method roll($count = 1)

Returns a lazy list of `$count`

elements, each randomly selected from the set. Each random choice is made independently, like a separate die roll where each die face is a set element.

If `*`

is passed as `$count`

, the list is infinite.

## method keys

Returns a list of all elements of the set.

## method values

Returns a list containing as many `True`

values as the set has elements.

## method kv

Returns a list of the set's elements and `True`

values interleaved.

## method elems

method elems(--> Int)

The number of elements of the set.

## method total

method total(--> Int)

The total of all the values of the `QuantHash`

object. For a `Setty`

object, this is just the number of elements.

## method ACCEPTS

method ACCEPTS($other)

Returns `True`

if `$other`

and `self`

contain all the same elements, and no others.

# See Also

# Type graph

Below you should see an image showing the type relations for Setty. If not, try the PNG version.