sealed abstract class ZTRef[+EA, +EB, -A, +B] extends Serializable
A ZTRef[EA, EB, A, B] is a polymorphic, purely functional description of a
mutable reference that can be modified as part of a transactional effect. The
fundamental operations of a ZTRef are set and get. set takes a value
of type A and transactionally sets the reference to a new value, potentially
failing with an error of type EA. get gets the current value of the reference
and returns a value of type B, potentially failing with an error of type EB.
When the error and value types of the ZTRef are unified, that is, it is a
ZTRef[E, E, A, A], the ZTRef also supports atomic modify and update
operations. All operations are guaranteed to be executed transactionally.
NOTE: While ZTRef provides the transactional equivalent of a mutable reference,
the value inside the ZTRef should be immutable. For performance reasons ZTRef
is implemented in terms of compare and swap operations rather than synchronization.
These operations are not safe for mutable values that do not support concurrent
access.
- Self Type
- ZTRef[EA, EB, A, B]
- Alphabetic
- By Inheritance
- ZTRef
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def atomic: Atomic[_]
- Attributes
- protected
- abstract def fold[EC, ED, C, D](ea: (EA) => EC, eb: (EB) => ED, ca: (C) => Either[EC, A], bd: (B) => Either[ED, D]): ZTRef[EC, ED, C, D]
Folds over the error and value types of the
ZTRef.Folds over the error and value types of the
ZTRef. This is a highly polymorphic method that is capable of arbitrarily transforming the error and value types of theZTRef. For most use cases one of the more specific combinators implemented in terms offoldwill be more ergonomic but this method is extremely useful for implementing new combinators. - abstract def foldAll[EC, ED, C, D](ea: (EA) => EC, eb: (EB) => ED, ec: (EB) => EC, ca: (C) => (B) => Either[EC, A], bd: (B) => Either[ED, D]): ZTRef[EC, ED, C, D]
Folds over the error and value types of the
ZTRef, allowing access to the state in transforming thesetvalue.Folds over the error and value types of the
ZTRef, allowing access to the state in transforming thesetvalue. This is a more powerful version offoldbut requires unifying the error types. - abstract def get: STM[EB, B]
Retrieves the value of the
ZTRef. - abstract def set(a: A): STM[EA, Unit]
Sets the value of the
ZTRef.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- 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 collect[C](pf: PartialFunction[B, C]): ZTRef[EA, Option[EB], A, C]
Maps and filters the
getvalue of theZTRefwith the specified partial function, returning aZTRefwith agetvalue that succeeds with the result of the partial function if it is defined or else fails withNone. - final def contramap[C](f: (C) => A): ZTRef[EA, EB, C, B]
Transforms the
setvalue of theZTRefwith the specified function. - final def contramapEither[EC >: EA, C](f: (C) => Either[EC, A]): ZTRef[EC, EB, C, B]
Transforms the
setvalue of theZTRefwith the specified fallible function. - final def dimap[C, D](f: (C) => A, g: (B) => D): ZTRef[EA, EB, C, D]
Transforms both the
setandgetvalues of theZTRefwith the specified functions. - final def dimapEither[EC >: EA, ED >: EB, C, D](f: (C) => Either[EC, A], g: (B) => Either[ED, D]): ZTRef[EC, ED, C, D]
Transforms both the
setandgetvalues of theZTRefwith the specified fallible functions. - final def dimapError[EC, ED](f: (EA) => EC, g: (EB) => ED): ZTRef[EC, ED, A, B]
Transforms both the
setandgeterrors of theZTRefwith the specified functions. - final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def filterInput[A1 <: A](f: (A1) => Boolean): ZTRef[Option[EA], EB, A1, B]
Filters the
setvalue of theZTRefwith the specified predicate, returning aZTRefwith asetvalue that succeeds if the predicate is satisfied or else fails withNone. - final def filterOutput(f: (B) => Boolean): ZTRef[EA, Option[EB], A, B]
Filters the
getvalue of theZTRefwith the specified predicate, returning aZTRefwith agetvalue that succeeds if the predicate is satisfied or else fails withNone. - def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- 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
- final def map[C](f: (B) => C): ZTRef[EA, EB, A, C]
Transforms the
getvalue of theZTRefwith the specified function. - final def mapEither[EC >: EB, C](f: (B) => Either[EC, C]): ZTRef[EA, EC, A, C]
Transforms the
getvalue of theZTRefwith the specified fallible function. - 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 readOnly: ZTRef[EA, EB, Nothing, B]
Returns a read only view of the
ZTRef. - 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()
- final def writeOnly: ZTRef[EA, Unit, A, Nothing]
Returns a write only view of the
ZTRef.