Hyperlinkv0.8.0-beta.28

Iterable

Iterable.getSomesconsteffect/Iterable.ts:1765
<A>(self: Iterable<Option<A>>): Iterable<A>

Retrieves the Some values from an Iterable of Options.

Example (Extracting Some values)

import { Iterable, Option } from "effect"
import * as assert from "node:assert"

assert.deepStrictEqual(
  Array.from(
    Iterable.getSomes([Option.some(1), Option.none(), Option.some(2)])
  ),
  [1, 2]
)
filtering
export const getSomes = <A>(self: Iterable<Option<A>>): Iterable<A> => {
  return {
    [Symbol.iterator]() {
      const iterator = self[Symbol.iterator]()
      return {
        next() {
          let result = iterator.next()
          while (!result.done) {
            if (O.isSome(result.value)) {
              return { done: false, value: result.value.value }
            }
            result = iterator.next()
          }
          return { done: true, value: undefined }
        }
      }
    }
  }
}