trait ModelRW[M, S] extends ModelR[M, S]
Base trait for all model writers
- M
Type of the base model
- S
Type of the reader/writer value
- Alphabetic
- By Inheritance
- ModelRW
- ModelR
- ModelRO
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
Abstract Value Members
- abstract def ===(that: S): Boolean
Checks if
that
is equal tothis
using an appropriate equality checkChecks if
that
is equal tothis
using an appropriate equality check- that
Value to compare with
- Definition Classes
- ModelRO
- abstract def eval(model: M): S
Evaluates the reader against a supplied
model
Evaluates the reader against a supplied
model
- Definition Classes
- ModelR
- abstract def root: ModelR[M, M]
Returns the root model reader of this reader
Returns the root model reader of this reader
- Definition Classes
- ModelR
- abstract def updated(newValue: S): M
Updates the model using the value provided and returns the updated model.
- abstract def updatedWith(model: M, newValue: S): M
Updates the supplied model with the value provided and returns the updated model.
- abstract def value: S
Returns the value of the reader
Returns the value of the reader
- Definition Classes
- ModelRO
- abstract def zip[SS](that: ModelR[M, SS])(implicit feqS: FastEq[_ >: S], feqSS: FastEq[_ >: SS]): ModelR[M, (S, SS)]
Combines this reader with another reader to provide a new reader returning a tuple of the values of the two original readers.
Combines this reader with another reader to provide a new reader returning a tuple of the values of the two original readers.
- that
The other reader
- Definition Classes
- ModelR
- abstract def zoom[T](get: (S) => T)(implicit feq: FastEq[_ >: T]): NewR[T]
Zooms into the model using the provided accessor function
Zooms into the model using the provided accessor function
- get
Function to go from current reader to a new value
- Definition Classes
- ModelRO
- abstract def zoomFlatMap[F[_], A, B](fa: (S) => F[A])(f: (A) => F[B])(implicit monad: Monad[F], feq: FastEq[_ >: B]): NewR[F[B]]
Zooms into the model and flatMaps over the zoomed value, which must be of type
F[A]
Zooms into the model and flatMaps over the zoomed value, which must be of type
F[A]
- fa
Zooming function
- f
The function to apply, must return a value of type
F[B]
- Definition Classes
- ModelRO
- abstract def zoomFlatMapRW[F[_], A, B](fa: (S) => F[A])(f: (A) => F[B])(set: (S, F[B]) => S)(implicit monad: Monad[F], feq: FastEq[_ >: B]): ModelRW[M, F[B]]
Zooms into the model and flatMaps over the zoomed value, which must be of type
F[A]
.Zooms into the model and flatMaps over the zoomed value, which must be of type
F[A]
. Theset
function is used to update the model with a new value.- fa
Zooming function
- f
The function to apply
- set
Function to update the model with a new value
- abstract def zoomMap[F[_], A, B](fa: (S) => F[A])(f: (A) => B)(implicit monad: Monad[F], feq: FastEq[_ >: B]): NewR[F[B]]
Zooms into the model and maps over the zoomed value, which must be of type
F[A]
Zooms into the model and maps over the zoomed value, which must be of type
F[A]
- fa
Zooming function
- f
The function to apply
- Definition Classes
- ModelRO
- abstract def zoomMapRW[F[_], A, B](fa: (S) => F[A])(f: (A) => B)(set: (S, F[B]) => S)(implicit monad: Monad[F], feq: FastEq[_ >: B]): ModelRW[M, F[B]]
Zooms into the model and maps over the zoomed value, which must be of type
F[A]
.Zooms into the model and maps over the zoomed value, which must be of type
F[A]
. Theset
function is used to update the model with a new value.- fa
Zooming function
- f
The function to apply
- set
Function to update the model with a new value
- abstract def zoomRW[T](get: (S) => T)(set: (S, T) => S)(implicit feq: FastEq[_ >: T]): ModelRW[M, T]
Zooms into the model using the provided
get
function.Zooms into the model using the provided
get
function. Theset
function is used to update the model with a new value.- get
Function to go from current reader to a new value
- set
Function to update the model with a new value
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- def =!=(that: S): Boolean
- Definition Classes
- ModelRO
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply(): S
Returns the value of the reader
Returns the value of the reader
- Definition Classes
- ModelRO
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flatMap[F[_], A, B](f: (A) => F[B])(implicit ev: =:=[S, F[A]], monad: Monad[F], feq: FastEq[_ >: B]): NewR[F[B]]
FlatMaps over current reader into a new value provided by
f
.FlatMaps over current reader into a new value provided by
f
. Reader typeS
must be of typeF[A]
, for exampleOption[A]
.- f
The function to apply, must return a value of type
F[B]
- Definition Classes
- ModelRO
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def map[F[_], A, B](f: (A) => B)(implicit ev: =:=[S, F[A]], monad: Monad[F], feq: FastEq[_ >: B]): NewR[F[B]]
Maps over current reader into a new value provided by
f
.Maps over current reader into a new value provided by
f
. Reader typeS
must be of typeF[A]
, for exampleOption[A]
.- f
The function to apply
- Definition Classes
- ModelRO
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- macro def zoomTo[T](field: (S) => T): ModelRW[M, T]
An easier way to zoom into a RW model by just specifying a single chained accessor for the field.
An easier way to zoom into a RW model by just specifying a single chained accessor for the field. This works for cases like
zoomTo(_.a.b.c)
but not for more complex cases such aszoomTo(_.a.b(0))
. Uses a macro to generate appropriate update function.- field
Field to access in the model