Sha256: 142bb9a5fd72a9c72437a1d922d313d085f60c3c684ce9186b1b6cf612c822c2
Contents?: true
Size: 911 Bytes
Versions: 1
Compression:
Stored size: 911 Bytes
Contents
# typed: true # frozen_string_literal: true require 'sorbet-runtime' # # An enumerable which is guaranteed to not be empty. # class NonEmptyArray include Enumerable extend T::Sig sig { params(first_element: T.untyped, tail: T::Array[T.untyped]).void } def initialize(first_element, tail = []) @head = first_element @tail = tail end sig { override.params(block: T.untyped).void } def each(&block) all_elements.each(&block) end sig { returns(T.untyped) } def last @tail[-1] || @head end sig { returns(T::Array[T.untyped]) } def all_but_last T.must(all_elements.slice(0..-2)) end sig { returns(T::Array[T.untyped]) } attr_reader :tail sig { params(element: T.untyped).returns(NonEmptyArray) } def push(element) @tail.push(element) self end private sig { returns(T::Array[T.untyped]) } def all_elements [@head] + @tail end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
non_empty_array-1.1.0 | lib/non_empty_array.rb |