abstract class Chunk[+O] extends Segment[O, Unit]
Segment with a known size and that allows index-based random access of elements.
Chunk
s can be created for a variety of collection types using methods on the Chunk
companion
(e.g., Chunk.vector
, Chunk.seq
, Chunk.array
). Additionally, the Chunk
companion
defines a subtype of Chunk
for each primitive type, using an unboxed primitive array.
To work with unboxed arrays, use methods like toBytes
to convert a Chunk[Byte]
to a Chunk.Bytes
and then access the array directly.
This type intentionally has a very limited API. Most operations are defined on Segment
in a lazy/fusable
fashion. In general, better performance comes from fusing as many operations as possible. As such, the
chunk API is minimal, to encourage use of the fusable operations.
Some operations have a lazy/fusable definition (on Segment
) and a strict definition
on Chunk
. To call such operations, use the .strict
method -- e.g., c.strict.splitAt(3)
.
- Self Type
- Chunk[O]
- Source
- Chunk.scala
- Alphabetic
- By Inheritance
- Chunk
- Segment
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Chunk()
Abstract Value Members
-
abstract
def
apply(i: Int): O
Returns the element at the specified index.
Returns the element at the specified index. Throws if index is < 0 or >= size.
-
abstract
def
mapStrict[O2](f: (O) ⇒ O2): Chunk[O2]
Strict version of
map
.Strict version of
map
.- Attributes
- protected
-
abstract
def
size: Int
Returns the number of elements in this chunk.
-
abstract
def
splitAtChunk_(n: Int): (Chunk[O], Chunk[O])
Strict version of
splitAt
-n
is guaranteed to be within bounds so implementations do not need to do bounds checking.Strict version of
splitAt
-n
is guaranteed to be within bounds so implementations do not need to do bounds checking.- Attributes
- protected
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
-
final
def
++[O2 >: O, R2 >: Unit](s2: Segment[O2, R2]): Segment[O2, R2]
Concatenates this segment with
s2
.Concatenates this segment with
s2
.- Definition Classes
- Segment
scala> (Segment(1,2,3) ++ Segment(4,5,6)).toVector res0: Vector[Int] = Vector(1, 2, 3, 4, 5, 6)
Example: - def ->[B](y: B): (Chunk[O], B)
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
append[O2 >: O, R2](s2: Segment[O2, R2]): Segment[O2, (Unit, R2)]
Like
++
but allows the result type ofs2
to differ fromR
.Like
++
but allows the result type ofs2
to differ fromR
.- Definition Classes
- Segment
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
final
def
asResult[R2](r2: R2): Segment[O, R2]
Alias for
mapResult( => r2)
.Alias for
mapResult( => r2)
.- Definition Classes
- Segment
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
collect[O2](pf: PartialFunction[O, O2]): Segment[O2, Unit]
Filters and maps simultaneously.
Filters and maps simultaneously.
- Definition Classes
- Segment
scala> Segment(Some(1), None, Some(2)).collect { case Some(i) => i }.toVector res0: Vector[Int] = Vector(1, 2)
Example: -
final
def
cons[O2 >: O](o2: O2): Segment[O2, Unit]
Equivalent to
Segment.singleton(o2) ++ this
.Equivalent to
Segment.singleton(o2) ++ this
.- Definition Classes
- Segment
scala> Segment(1, 2, 3).cons(0).toVector res0: Vector[Int] = Vector(0, 1, 2, 3)
Example: -
final
def
drain: Segment[Nothing, Unit]
Returns a segment that suppresses all output and returns the result of this segment when run.
Returns a segment that suppresses all output and returns the result of this segment when run.
- Definition Classes
- Segment
scala> Segment.from(0).take(3).drain.run.toOption.get.take(5).toVector res0: Vector[Long] = Vector(3, 4, 5, 6, 7)
Example: -
final
def
drop(n: Long): Either[(Unit, Long), Segment[O, Unit]]
Eagerly drops
n
elements from the head of this segment, returning either the result and the number of elements remaining to drop, if the end of the segment was reached, or a new segment, if the end of the segment was not reached.Eagerly drops
n
elements from the head of this segment, returning either the result and the number of elements remaining to drop, if the end of the segment was reached, or a new segment, if the end of the segment was not reached.- Definition Classes
- Segment
scala> Segment(1,2,3,4,5).drop(3).toOption.get.toVector res0: Vector[Int] = Vector(4, 5) scala> Segment(1,2,3,4,5).drop(7) res1: Either[(Unit, Long),Segment[Int,Unit]] = Left(((),2))
Example: -
final
def
dropWhile(p: (O) ⇒ Boolean, dropFailure: Boolean = false): Either[Unit, Segment[O, Unit]]
Eagerly drops elements from the head of this segment until the supplied predicate returns false, returning either the result, if the end of the segment was reached without the predicate failing, or the remaining segment.
Eagerly drops elements from the head of this segment until the supplied predicate returns false, returning either the result, if the end of the segment was reached without the predicate failing, or the remaining segment.
If
dropFailure
is true, the first element that failed the predicate will be dropped. If false, the first element that failed the predicate will be the first element of the remainder.- Definition Classes
- Segment
scala> Segment(1,2,3,4,5).dropWhile(_ < 3).map(_.toVector) res0: Either[Unit,Vector[Int]] = Right(Vector(3, 4, 5)) scala> Segment(1,2,3,4,5).dropWhile(_ < 10) res1: Either[Unit,Segment[Int,Unit]] = Left(())
Example: - def ensuring(cond: (Chunk[O]) ⇒ Boolean, msg: ⇒ Any): Chunk[O]
- def ensuring(cond: (Chunk[O]) ⇒ Boolean): Chunk[O]
- def ensuring(cond: Boolean, msg: ⇒ Any): Chunk[O]
- def ensuring(cond: Boolean): Chunk[O]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(a: Any): Boolean
- Definition Classes
- Segment → AnyRef → Any
-
final
def
filter[O2](p: (O) ⇒ Boolean): Segment[O, Unit]
Filters output elements of this segment with the supplied predicate.
Filters output elements of this segment with the supplied predicate.
- Definition Classes
- Segment
scala> Segment(1,2,3,4,5).filter(_ % 2 == 0).toVector res0: Vector[Int] = Vector(2, 4)
Example: -
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
flatMap[O2, R2](f: (O) ⇒ Segment[O2, R2]): Segment[O2, (Unit, Option[R2])]
List-like
flatMap
, which appliesf
to each element of the segment and concatenates the results.List-like
flatMap
, which appliesf
to each element of the segment and concatenates the results.- Definition Classes
- Segment
scala> Segment(1, 2, 3).flatMap(i => Segment.seq(List.fill(i)(i))).toVector res0: Vector[Int] = Vector(1, 2, 2, 3, 3, 3)
Example: -
final
def
flatMapAccumulate[S, O2](init: S)(f: (S, O) ⇒ Segment[O2, S]): Segment[O2, (Unit, S)]
Stateful version of
flatMap
, where the function depends on a state value initialized toinit
and updated upon each output.Stateful version of
flatMap
, where the function depends on a state value initialized toinit
and updated upon each output.The final state is returned in the result, paired with the result of the source stream.
- Definition Classes
- Segment
scala> val src = Segment("Hello", "World", "\n", "From", "Mars").flatMapAccumulate(0)((l,s) => | if (s == "\n") Segment.empty.asResult(0) else Segment((l,s)).asResult(l + s.length)) scala> src.toVector res0: Vector[(Int,String)] = Vector((0,Hello), (5,World), (0,From), (4,Mars)) scala> src.void.run res1: (Unit,Int) = ((),8)
Example: -
final
def
flatten[O2, R2 >: Unit](implicit ev: <:<[O, Segment[O2, R2]]): Segment[O2, R2]
Flattens a
Segment[Segment[O2,R],R]
in to aSegment[O2,R]
.Flattens a
Segment[Segment[O2,R],R]
in to aSegment[O2,R]
.- Definition Classes
- Segment
scala> Segment(Segment(1, 2), Segment(3, 4, 5)).flatten.toVector res0: Vector[Int] = Vector(1, 2, 3, 4, 5)
Example: -
final
def
flattenChunks[O2](implicit ev: <:<[O, Chunk[O2]]): Segment[O2, Unit]
Flattens a
Segment[Chunk[O2],R]
in to aSegment[O2,R]
.Flattens a
Segment[Chunk[O2],R]
in to aSegment[O2,R]
.- Definition Classes
- Segment
scala> Segment(Chunk(1, 2), Chunk(3, 4, 5)).flattenChunks.toVector res0: Vector[Int] = Vector(1, 2, 3, 4, 5)
Example: -
final
def
fold[B](z: B)(f: (B, O) ⇒ B): Segment[Nothing, B]
Folds the output elements of this segment and returns the result as the result of the returned segment.
Folds the output elements of this segment and returns the result as the result of the returned segment.
- Definition Classes
- Segment
scala> Segment(1,2,3,4,5).fold(0)(_ + _).run res0: Int = 15
Example: -
def
foreach(f: (O) ⇒ Unit): Unit
Invokes
f
on each output of this segment.Invokes
f
on each output of this segment.- Definition Classes
- Segment
scala> val buf = collection.mutable.ListBuffer[Int]() scala> Segment(1,2,3).cons(0).foreach(i => buf += i) res0: Unit = () scala> buf.toList res1: List[Int] = List(0, 1, 2, 3)
Example: -
def
foreachChunk(f: (Chunk[O]) ⇒ Unit): Unit
Invokes
f
on each chunk of this segment. - def formatted(fmtstr: String): String
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- Segment → AnyRef → Any
-
def
indexWhere(p: (O) ⇒ Boolean): Option[Int]
Returns the index of the first element which passes the specified predicate (i.e.,
p(i) == true
) orNone
if no elements pass the predicate. -
final
def
isEmpty: Boolean
True if size is zero, false otherwise.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
last: Segment[Nothing, (Unit, Option[O])]
Returns a segment that suppresses all output and returns the last element output by source segment paired with the source segment result.
Returns a segment that suppresses all output and returns the last element output by source segment paired with the source segment result.
- Definition Classes
- Segment
scala> Segment(1,2,3).last.run res0: (Unit, Option[Int]) = ((),Some(3))
Example: -
def
map[O2](f: (O) ⇒ O2): Segment[O2, Unit]
Returns a segment that maps each output using the supplied function.
Returns a segment that maps each output using the supplied function.
- Definition Classes
- Segment
scala> Segment(1,2,3).map(_ + 1).toVector res0: Vector[Int] = Vector(2, 3, 4)
Example: -
def
mapAccumulate[S, O2](init: S)(f: (S, O) ⇒ (S, O2)): Segment[O2, (Unit, S)]
Stateful version of map, where the map function depends on a state value initialized to
init
and updated upon each output value.Stateful version of map, where the map function depends on a state value initialized to
init
and updated upon each output value.The final state is returned in the result, paired with the result of the source stream.
- Definition Classes
- Segment
scala> val src = Segment("Hello", "World").mapAccumulate(0)((l,s) => (l + s.length, (l, s))) scala> src.toVector res0: Vector[(Int,String)] = Vector((0,Hello), (5,World)) scala> src.void.run res1: (Unit,Int) = ((),10)
Example: -
final
def
mapConcat[O2](f: (O) ⇒ Chunk[O2]): Segment[O2, Unit]
Returns a segment that maps each output using the supplied function and concatenates all the results.
Returns a segment that maps each output using the supplied function and concatenates all the results.
- Definition Classes
- Segment
scala> Segment(1,2,3).mapConcat(o => Chunk.seq(List.range(0, o))).toVector res0: Vector[Int] = Vector(0, 0, 1, 0, 1, 2)
Example: -
final
def
mapResult[R2](f: (Unit) ⇒ R2): Segment[O, R2]
Maps the supplied function over the result of this segment.
Maps the supplied function over the result of this segment.
- Definition Classes
- Segment
scala> Segment('a', 'b', 'c').withSize.mapResult { case (_, size) => size }.void.run res0: Long = 3
Example: -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
nonEmpty: Boolean
False if size is zero, true otherwise.
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
final
def
prepend[O2 >: O](c: Segment[O2, Any]): Segment[O2, Unit]
Equivalent to
s2 ++ this
.Equivalent to
s2 ++ this
.- Definition Classes
- Segment
scala> Segment(1, 2, 3).prepend(Segment(-1, 0)).toVector res0: Vector[Int] = Vector(-1, 0, 1, 2, 3)
Example: -
final
def
run[O2 >: O](implicit ev: =:=[O2, Unit]): Unit
Computes the result of this segment.
Computes the result of this segment. May only be called when
O
isUnit
, to prevent accidentally ignoring output values. To intentionally ignore outputs, calls.void.run
.- Definition Classes
- Segment
scala> Segment(1, 2, 3).withSize.void.run res0: (Unit,Long) = ((),3)
Example: -
final
def
scan[B](z: B, emitFinal: Boolean = true)(f: (B, O) ⇒ B): Segment[B, B]
Like fold but outputs intermediate results.
Like fold but outputs intermediate results. If
emitFinal
is true, upon reaching the end of the stream, the accumulated value is output. IfemitFinal
is false, the accumulated output is not output. Regardless, the accumulated value is returned as the result of the segment.- Definition Classes
- Segment
scala> Segment(1, 2, 3, 4, 5).scan(0)(_+_).toVector res0: Vector[Int] = Vector(0, 1, 3, 6, 10, 15)
Example: -
final
def
splitAt(n: Long): Either[(Unit, Catenable[Segment[O, Unit]], Long), (Catenable[Segment[O, Unit]], Segment[O, Unit])]
Splits this segment at the specified index by simultaneously taking and dropping.
Splits this segment at the specified index by simultaneously taking and dropping.
If the segment has less than
n
elements, a left is returned, providing the result of the segment, all sub-segments taken, and the remaining number of elements (i.e., size - n).If the segment has more than
n
elements, a right is returned, providing the sub-segments up to then
-th element and a remainder segment.The prefix is computed eagerly while the suffix is computed lazily.
- Definition Classes
- Segment
scala> Segment(1, 2, 3, 4, 5).splitAt(2) res0: Either[(Unit,Catenable[Segment[Int,Unit]],Long),(Catenable[Segment[Int,Unit]],Segment[Int,Unit])] = Right((Catenable(Chunk(1, 2)),Chunk(3, 4, 5))) scala> Segment(1, 2, 3, 4, 5).splitAt(7) res0: Either[(Unit,Catenable[Segment[Int,Unit]],Long),(Catenable[Segment[Int,Unit]],Segment[Int,Unit])] = Left(((),Catenable(Chunk(1, 2, 3, 4, 5)),2))
Example: -
final
def
splitWhile(p: (O) ⇒ Boolean, emitFailure: Boolean = false): Either[(Unit, Catenable[Segment[O, Unit]]), (Catenable[Segment[O, Unit]], Segment[O, Unit])]
Splits this segment at the first element where the supplied predicate returns false.
Splits this segment at the first element where the supplied predicate returns false.
Analagous to siumultaneously running
takeWhile
anddropWhile
.If
emitFailure
is false, the first element which fails the predicate is returned in the suffix segment. If true, it is returned as the last element in the prefix segment.If the end of the segment is reached and the predicate has not failed, a left is returned, providing the segment result and the catenated sub-segments. Otherwise, a right is returned, providing the prefix sub-segments and the suffix remainder.
- Definition Classes
- Segment
scala> Segment(1, 2, 3, 4, 5).splitWhile(_ != 3) res0: Either[(Unit,Catenable[Segment[Int,Unit]]),(Catenable[Segment[Int,Unit]],Segment[Int,Unit])] = Right((Catenable(Chunk(1, 2)),Chunk(3, 4, 5))) scala> Segment(1, 2, 3, 4, 5).splitWhile(_ != 7) res0: Either[(Unit,Catenable[Segment[Int,Unit]]),(Catenable[Segment[Int,Unit]],Segment[Int,Unit])] = Left(((),Catenable(Chunk(1, 2, 3, 4, 5))))
Example: -
final
def
strict: StrictOps[O]
Provides access to strict equivalent methods defined lazily on
Segment
. -
final
def
sum[N >: O](implicit N: Numeric[N]): Segment[Nothing, N]
Sums the elements of this segment and returns the sum as the segment result.
Sums the elements of this segment and returns the sum as the segment result.
- Definition Classes
- Segment
scala> Segment(1, 2, 3, 4, 5).sum.run res0: Int = 15
Example: -
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
final
def
take(n: Long): Segment[O, Either[(Unit, Long), Segment[O, Unit]]]
Lazily takes
n
elements from this segment.Lazily takes
n
elements from this segment. The result of the returned segment is either a left containing the result of the original segment and the number of elements remaining to take when the end of the source segment was reached, or a right containing the remainder of the source segment aftern
elements are taken.- Definition Classes
- Segment
scala> Segment.from(0).take(3).toVector res0: Vector[Long] = Vector(0, 1, 2) scala> Segment.from(0).take(3).void.run.toOption.get.take(5).toVector res1: Vector[Long] = Vector(3, 4, 5, 6, 7) scala> Segment(1, 2, 3).take(5).void.run res2: Either[(Unit, Long),Segment[Int,Unit]] = Left(((),2))
Example: -
final
def
takeWhile(p: (O) ⇒ Boolean, takeFailure: Boolean = false): Segment[O, Either[Unit, Segment[O, Unit]]]
Returns a segment that outputs elements while
p
is true.Returns a segment that outputs elements while
p
is true.The result of the returned segment is either the result of the original stream, if the end was reached and the predicate was still passing, or the remaining stream, if the predicate failed. If
takeFailure
is true, the last element output is the first element which failed the predicate. IftakeFailure
is false, the first element of the remainder is the first element which failed the predicate.- Definition Classes
- Segment
scala> Segment.from(0).takeWhile(_ < 3).toVector res0: Vector[Long] = Vector(0, 1, 2) scala> Segment.from(0).takeWhile(_ < 3, takeFailure = true).toVector res1: Vector[Long] = Vector(0, 1, 2, 3) scala> Segment.from(0).takeWhile(_ < 3).void.run.toOption.get.take(5).toVector res2: Vector[Long] = Vector(3, 4, 5, 6, 7)
Example: -
def
toArray[O2 >: O](implicit arg0: ClassTag[O2]): Array[O2]
Copies the elements of this chunk to an array.
-
def
toBooleans[B >: O](implicit ev: =:=[B, Boolean]): Booleans
Converts this chunk to a
Chunk.Booleans
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Booleans
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of booleans, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toBytes[B >: O](implicit ev: =:=[B, Byte]): Bytes
Converts this chunk to a
Chunk.Bytes
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Bytes
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of bytes, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toCatenable: Catenable[O]
Converts this segment to a catenable of output values, discarding the result.
Converts this segment to a catenable of output values, discarding the result.
Caution: calling
toCatenable
on an infinite sequence will not terminate.- Definition Classes
- Segment
scala> Segment(1, 2, 3).cons(0).cons(-1).toCatenable.toList res0: List[Int] = List(-1, 0, 1, 2, 3)
Example: -
def
toChunk: Chunk[O]
Converts this segment to a single chunk, discarding the result.
-
def
toChunks: Catenable[Chunk[O]]
Converts this segment to a sequence of chunks, discarding the result.
Converts this segment to a sequence of chunks, discarding the result.
Caution: calling
toChunks
on an infinite sequence will not terminate. -
def
toDoubles[B >: O](implicit ev: =:=[B, Double]): Doubles
Converts this chunk to a
Chunk.Doubles
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Doubles
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of doubles, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toFloats[B >: O](implicit ev: =:=[B, Float]): Floats
Converts this chunk to a
Chunk.Floats
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Floats
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of doubles, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toInts[B >: O](implicit ev: =:=[B, Int]): Ints
Converts this chunk to a
Chunk.Ints
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Ints
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of bytes, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toList: List[O]
Converts this segment to a list, discarding the result.
Converts this segment to a list, discarding the result.
Caution: calling
toList
on an infinite sequence will not terminate.- Definition Classes
- Segment
scala> Segment(1, 2, 3).cons(0).cons(-1).toList res0: List[Int] = List(-1, 0, 1, 2, 3)
Example: -
def
toLongs[B >: O](implicit ev: =:=[B, Long]): Longs
Converts this chunk to a
Chunk.Longs
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Longs
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of longs, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toShorts[B >: O](implicit ev: =:=[B, Short]): Shorts
Converts this chunk to a
Chunk.Shorts
, allowing access to the underlying array of elements.Converts this chunk to a
Chunk.Shorts
, allowing access to the underlying array of elements. If this chunk is already backed by an unboxed array of bytes, this method runs in constant time. Otherwise, this method will copy of the elements of this chunk in to a single array. -
def
toString(): String
- Definition Classes
- Chunk → AnyRef → Any
-
def
toVector: Vector[O]
Converts this segment to a list, discarding the result.
-
final
def
uncons: Either[Unit, (Segment[O, Unit], Segment[O, Unit])]
Returns the first output sub-segment of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.Returns the first output sub-segment of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.- Definition Classes
- Segment
scala> Segment(1, 2, 3).cons(0).uncons res0: Either[Unit,(Segment[Int,Unit], Segment[Int,Unit])] = Right((Chunk(0),Chunk(1, 2, 3))) scala> Segment.empty[Int].uncons res1: Either[Unit,(Segment[Int,Unit], Segment[Int,Unit])] = Left(())
Example: -
final
def
uncons1: Either[Unit, (O, Segment[O, Unit])]
Returns the first output of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.Returns the first output of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.- Definition Classes
- Segment
- Annotations
- @tailrec()
scala> Segment(1, 2, 3).cons(0).uncons1 res0: Either[Unit,(Int, Segment[Int,Unit])] = Right((0,Chunk(1, 2, 3))) scala> Segment.empty[Int].uncons1 res1: Either[Unit,(Int, Segment[Int,Unit])] = Left(())
Example: -
def
unconsChunk: Either[Unit, (Chunk[O], Segment[O, Unit])]
Returns the first output chunk of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.Returns the first output chunk of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
. -
final
def
unconsChunks: Either[Unit, (Catenable[Chunk[O]], Segment[O, Unit])]
Returns the first output chunks of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.Returns the first output chunks of this segment along with the remainder, wrapped in
Right
, or if this segment is empty, returns the result wrapped inLeft
.Differs from
unconsChunk
when a single step results in multiple outputs.- Definition Classes
- Segment
scala> Segment(1, 2, 3).prepend(Chunk(-1, 0)).unconsChunks res0: Either[Unit,(Catenable[Chunk[Int]], Segment[Int,Unit])] = Right((Catenable(Chunk(-1, 0)),Chunk(1, 2, 3))) scala> Segment.empty[Int].unconsChunks res1: Either[Unit,(Catenable[Chunk[Int]], Segment[Int,Unit])] = Left(())
Example: -
final
def
void: Segment[Unit, Unit]
Alias for
map(_ => ())
.Alias for
map(_ => ())
.- Definition Classes
- Segment
scala> Segment(1, 2, 3).void.toList res0: List[Unit] = List((), (), ())
Example: -
final
def
voidResult: Segment[O, Unit]
Returns a new segment which discards the result and replaces it with unit.
Returns a new segment which discards the result and replaces it with unit.
- Definition Classes
- Segment
scala> Segment(1, 2, 3).take(2).voidResult res0: Segment[Int,Unit] = ((Chunk(1, 2, 3)).take(2)).mapResult(<f1>)
Example: -
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
withSize: Segment[O, (Unit, Long)]
Returns a new segment which includes the number of elements output in the result.
Returns a new segment which includes the number of elements output in the result.
- Definition Classes
- Segment
scala> Segment(1, 2, 3).withSize.void.run res0: (Unit,Long) = ((),3)
Example: -
def
zipWith[O2, R2, O3](that: Segment[O2, R2])(f: (O, O2) ⇒ O3): Segment[O3, Either[(Unit, Segment[O2, R2]), (R2, Segment[O, Unit])]]
Zips this segment with another segment using the supplied function to combine elements from this and that.
Zips this segment with another segment using the supplied function to combine elements from this and that. Terminates when either segment terminates.
- Definition Classes
- Segment
scala> Segment(1,2,3).zipWith(Segment(4,5,6,7))(_+_).toList res0: List[Int] = List(5, 7, 9)
Example: - def →[B](y: B): (Chunk[O], B)