sealed trait ZRef[+EA, +EB, -A, +B] extends Serializable
A ZRef[EA, EB, A, B] is a polymorphic, purely functional description of a
mutable reference. The fundamental operations of a ZRef are set and
get. set takes a value of type A and 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 ZRef are unified, that is, it is a
ZRef[E, E, A, A], the ZRef also supports atomic modify and update
operations. All operations are guaranteed to be safe for concurrent access.
NOTE: While ZRef provides the functional equivalent of a mutable
reference, the value inside the ZRef should be immutable. For performance
reasons ZRef 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
- ZRef[EA, EB, A, B]
- Alphabetic
- By Inheritance
- ZRef
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
fold[EC, ED, C, D](ea: (EA) ⇒ EC, eb: (EB) ⇒ ED, ca: (C) ⇒ Either[EC, A], bd: (B) ⇒ Either[ED, D]): ZRef[EC, ED, C, D]
Folds over the error and value types of the
ZRef.Folds over the error and value types of the
ZRef. This is a highly polymorphic method that is capable of arbitrarily transforming the error and value types of theZRef. 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]): ZRef[EC, ED, C, D]
Folds over the error and value types of the
ZRef, allowing access to the state in transforming thesetvalue.Folds over the error and value types of the
ZRef, allowing access to the state in transforming thesetvalue. This is a more powerful version offoldbut requires unifying the error types. -
abstract
def
get: IO[EB, B]
Reads the value from the
ZRef. -
abstract
def
set(a: A): IO[EA, Unit]
Writes a new value to the
ZRef, with a guarantee of immediate consistency (at some cost to performance). -
abstract
def
setAsync(a: A): IO[EA, Unit]
Writes a new value to the
ZRefwithout providing a guarantee of immediate consistency.
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( ... ) @native()
-
final
def
collect[C](pf: PartialFunction[B, C]): ZRef[EA, Option[EB], A, C]
Maps and filters the
getvalue of theZRefwith the specified partial function, returning aZRefwith 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): ZRef[EA, EB, C, B]
Transforms the
setvalue of theZRefwith the specified function. -
final
def
contramapEither[EC >: EA, C](f: (C) ⇒ Either[EC, A]): ZRef[EC, EB, C, B]
Transforms the
setvalue of theZRefwith the specified fallible function. -
final
def
dimap[C, D](f: (C) ⇒ A, g: (B) ⇒ D): ZRef[EA, EB, C, D]
Transforms both the
setandgetvalues of theZRefwith the specified functions. -
final
def
dimapEither[EC >: EA, ED >: EB, C, D](f: (C) ⇒ Either[EC, A], g: (B) ⇒ Either[ED, D]): ZRef[EC, ED, C, D]
Transforms both the
setandgetvalues of theZRefwith the specified fallible functions. -
final
def
dimapError[EC, ED](f: (EA) ⇒ EC, g: (EB) ⇒ ED): ZRef[EC, ED, A, B]
Transforms both the
setandgeterrors of theZRefwith the specified functions. -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
filterInput[A1 <: A](f: (A1) ⇒ Boolean): ZRef[Option[EA], EB, A1, B]
Filters the
setvalue of theZRefwith the specified predicate, returning aZRefwith asetvalue that succeeds if the predicate is satisfied or else fails withNone. -
final
def
filterOutput(f: (B) ⇒ Boolean): ZRef[EA, Option[EB], A, B]
Filters the
getvalue of theZRefwith the specified predicate, returning aZRefwith 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[_]
- 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): ZRef[EA, EB, A, C]
Transforms the
getvalue of theZRefwith the specified function. -
final
def
mapEither[EC >: EB, C](f: (B) ⇒ Either[EC, C]): ZRef[EA, EC, A, C]
Transforms the
getvalue of theZRefwith 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: ZRef[EA, EB, Nothing, B]
Returns a read only view of the
ZRef. -
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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
writeOnly: ZRef[EA, Unit, A, Nothing]
Returns a write only view of the
ZRef.