array_methods/set_operations_and_lookup.rb
tests/_examples/array_methods/set_operations_and_lookup.rb in the metorex repository.
letters = [:a, :b, :b, :c]
p letters.union([:c, :d])
p letters.intersection([:b, :c, :e])
p letters.difference([:b])
p letters.union
p([1, 2] + [3])
p([1, 2, 2, 3] - [2])
p([1, 2] | [2, 3])
p([1, 2, 3] & [2, 3, 4])
p([1, 2] * 3)
p([1, 2] * ", ")
p([1, 2] <=> [1, 3])
p([1, 2] <=> [1, 2, 3])
p([1, 2] <=> [1, "two"])
pairs = [[:one, 1], [:two, 2]]
p pairs.assoc(:two)
p pairs.rassoc(1)
p pairs.assoc(:missing)
numbers = [10, 20, 30, 40]
p numbers.fetch(1)
p numbers.fetch(-1)
p numbers.fetch(9, :none)
p numbers.fetch(9) { |index| index * 2 }
p numbers.fetch_values(0, 2)
p numbers.values_at(0, 2..3)
p numbers.values_at(1..)
p numbers.values_at(..1)
p numbers.values_at(9)
begin
numbers.fetch(9)
rescue IndexError => error
puts error.message
end
p numbers.first(2)
p numbers.last(2)
p numbers.min
p numbers.max
p numbers.minmax
p numbers.max { |left, right| right <=> left }
stack = [1, 2, 3, 4]
p stack.pop(2)
p stack.shift(1)
p stack
p stack.insert(0, :front)
p stack.insert(-1, :back)
grid = [[1, 2], [3, 4]]
p grid.transpose
begin
[[1, 2], [3]].transpose
rescue IndexError => error
puts error.message
end
p [1, 2].zip([3, 4], [5, 6])
p [1, 2, 3].replace([:x])
begin
[].first(2**70)
rescue RangeError => error
puts error.class
end
Output:
[:a, :b, :c, :d]
[:b, :c]
[:a, :c]
[:a, :b, :c]
[1, 2, 3]
[1, 3]
[1, 2, 3]
[2, 3]
[1, 2, 1, 2, 1, 2]
"1, 2"
-1
-1
nil
[:two, 2]
[:one, 1]
nil
20
40
:none
18
[10, 30]
[10, 30, 40]
[20, 30, 40]
[10, 20]
[nil]
index 9 outside of array bounds: -4...4
[10, 20]
[30, 40]
10
40
[10, 40]
10
[3, 4]
[1]
[2]
[:front, 2]
[:front, 2, :back]
[[1, 3], [2, 4]]
element size differs (1 should be 2)
[[1, 3, 5], [2, 4, 6]]
[:x]
RangeError