class

Channel(T)

Inherits Iterator < Enumerable < Reference < Object

A Channel enables concurrent communication between fibers.

They allow communicating data between fibers without sharing memory and without having to worry about locks, semaphores or other special structures.

channel = Channel(Int32).new

spawn do
  channel.send(0)
  channel.send(1)
end

channel.receive # => 0
channel.receive # => 1

NOTE: Although a Channel(Nil) or any other nilable types like Channel(Int32?) are valid they are discouraged since from certain methods or constructs it receiving a nil as data will be indistinguishable from a closed channel.

Instance methods

|(other : Channel(K)) : Channel(T | K) forall K
Source
partition

Returns a Tuple with two arrays. The first one contains the elements in the collection for which the passed block is truthy, and the second one those for which the block is falsey.

[1, 2, 3, 4, 5, 6].partition { |i| i % 2 == 0 } # => {[2, 4, 6], [1, 3, 5]}
Source