klenses

Lenses for Kotlin.

Maven Central Build Status

Lenses are property references with some extra abilities: they can also be used to create a copy of an object with the property set to a different value, and they compose to form pointers into nested objects.

data class Inner(val value: String)
data class Outer(val outerValue: String, val inner: Inner?)

val foo = Outer("foo", null)

val outerValueLens = +Outer::outerValue
val innerLens = Outer::inner orElse Inner("xyzzy")
val innerValueLens = innerLens + Inner::value 

assertEquals("foo", outerValueLens(foo))
assertEquals(Outer("quux", null), outerValueLens(foo, "quux"))
assertEquals(Inner("xyzzy"), innerLens(foo))
assertEquals(Outer("foo", Inner("frobnitz")), innerValueLens(foo, "frobnitz"))
assertEquals(Outer("foo", Inner("XYZZY")), innerValueLens(foo) { toUpperCase() })
compile "com.codepoetics:klenses:0.4"

Related Libraries

vavr-kotlin

Vavr integration for Kotlin

Last updated 3 mins ago

Snail-Kotlin

An observables framework for Kotlin

Last updated 3 mins ago

rxkotlin

RxJava bindings for Kotlin

Last updated 3 mins ago

observableflow

Functional Constructs for Databinding + Kotlin + RxJava

Last updated 3 mins ago

klenses

Lenses for Kotlin

Last updated 3 mins ago