Array Kohärenzen

Manchmal muss die Kohärenz zwischen zwei Arrays qualitativ bestimmt werden. Das heißt, welche Elemente zweier Arrays sind gleich bzw. welche sind nicht gleich.

Kongruenz

Ruby bietet für Arrays einen Operator, der alle Elemente findet, die in beiden Arrays vorhanden sind:

[1, 2, 3, 3] & [2, 3, 4]
# => [2, 3]

Duplikate werden herausgefiltert.

Divergenz

Für divergierende Elemente zweier Arrays gibt es in Ruby keinen dedizierten Operator. Allerdings lassen sich die Elemente über Subtraktion der Arrays finden:

a = [1, 2, 3]
b = [2, 3, 4, 4]
(a - b) | (b - a)
# => [1, 4]

Mithilfe des | Operators werden auch hier die Duplikate herausgefiltert.

Eindeutige Gesamtmenge

Grundsätzlich kann mit dem | Operator die eindeutige Gesamtmenge zweier Arrays gefunden werden. Sicherlich könnte das auch folgendermaßen umgesetzt werden:

# schlecht([1, 2, 3] + [2, 3, 4]).uniq
# => [1, 2, 3, 4]

Eine bessere Implmentierung ist allerdings die mit dem | Operator:

# gut
[1, 2, 3] | [2, 3, 4]
# => [1, 2, 3, 4]