The OP doesn't like the look of an_ary.-([el]) ... but it really does have a lot going for it.
True...it's a little ugly, but the minus method does the trick concisely, subtracting one array from the other:
ary = [1, 2, 99, 3]
ary.-([99])
or
odds = [1, 3, 5, 7, 9, 99]
ary.-(odds)
The advantage here is that it is completely chainable (unlike .delete or ary - odds), so you can do things like:
ary.-(odds).average
Once your eye finds the minus sign, it's much easier to read, understand, and visually spot typos than the .delete_if or .reject block constructs.
It also plays well with Ruby's safe navigation operator, &., if you might get nil instead of an array. That's something you can't do elegantly with subtracting arrays.
maybe_array&.-(odds)&.average
ary.delete_if{ |e| e == elem }isn't very clear or concise. Why bother havingArray#compactif we can justdelete_if{ |e| e.nil? }?an_ary-=[el]ary.-([[1, 2]]). Ideallyreject,reject!,delete, anddelete_ifwould be brought further in line with the other destructive and synonymous methods.