Index
provides an Optional for a structure S
to focus in optional A
at a given index I
.
If, for a structure S
, the optionally focus A
can be indexed by I
, then Index
can create an Optional
with focus at S
for a given index I
.
We can use that Optional
to safely operate on that focus S
(i.e., operating on items in a List
based on the index position).
import arrow.optics.typeclasses.Index
val thirdListItemOptional = Index.list<String>().index(3)
thirdListItemOptional.set(listOf("0", "1", "2", "3"), "newValue")
thirdListItemOptional.set(listOf("0", "1", "2"), "newValue")
thirdListItemOptional.setNullable(listOf("0", "1", "2"), "newValue")
Index
instancesArrow provides Index
instances for some common datatypes in both Arrow and the Kotlin stdlib that can be indexed, like ListK
and MapK
.
You can look them up by calling Index.index()
.
You may create instances of Index
for your own datatypes, which you will be able to use as demonstrated in the example above.
See Deriving and creating custom typeclass to provide your own Index
instances for custom datatypes.
Do you like Arrow?
✖