object Optional
- Source
- Optional.scala
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- Optional
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Value Members
- def apply[S, A](_getOption: (S) => Option[A])(_set: (A) => (S) => S): Optional[S, A]
alias for POptional apply restricted to monomorphic update
- def filter[A](predicate: (A) => Boolean): Optional[A, A]
Select all the elements which satisfies the predicate.
Select all the elements which satisfies the predicate.
val positiveNumbers = Traversal.fromTraverse[List, Int] composeOptional filter[Int](_ >= 0) positiveNumbers.getAll(List(1,2,-3,4,-5)) == List(1,2,4) positiveNumbers.modify(_ * 10)(List(1,2,-3,4,-5)) == List(10,20,-3,40,-5)
filter
can break the fusion property, ifreplace
ormodify
do not preserve the predicate. For example, here the firstmodify
(x - 3
) transform the positive number 1 into the negative number -2.val positiveNumbers = Traversal.fromTraverse[List, Int] composeOptional Optional.filter[Int](_ >= 0) val list = List(1, 5, -3) val firstStep = positiveNumbers.modify(_ - 3)(list) // List(-2, 2, -3) val secondStep = positiveNumbers.modify(_ * 2)(firstStep) // List(-2, 4, -3) val bothSteps = positiveNumbers.modify(x => (x - 3) * 2)(list) // List(-4, 4, -3) secondStep != bothSteps
- See also
This method is called
filtered
in Haskell Lens.
- def void[S, A]: Optional[S, A]
Optional that points to nothing