Class/Object

zio

Ref

Related Docs: object Ref | package zio

Permalink

abstract class Ref[A] extends Serializable

A Ref is a purely functional description of a mutable reference. The fundamental operations of a Ref are set and get. set sets the reference to a new value. get gets the current value of the reference.

By default, Ref is implemented in terms of compare and swap operations for maximum performance and does not support performing effects within update operations. If you need to perform effects within update operations you can create a Ref.Synchronized, a specialized type of Ref that supports performing effects within update operations at some cost to performance. In this case writes will semantically block other writers, while multiple readers can read simultaneously.

NOTE: While Ref provides the functional equivalent of a mutable reference, the value inside the Ref should normally be immutable since compare and swap operations are not safe for mutable values that do not support concurrent access. If you do need to use a mutable value Ref.Synchronized will guarantee that access to the value is properly synchronized.

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Ref
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Ref()

    Permalink

Abstract Value Members

  1. abstract def get(implicit trace: Trace): UIO[A]

    Permalink

    Reads the value from the Ref.

  2. abstract def modify[B](f: (A) ⇒ (B, A))(implicit trace: Trace): UIO[B]

    Permalink

    Atomically modifies the Ref with the specified function, which computes a return value for the modification.

    Atomically modifies the Ref with the specified function, which computes a return value for the modification. This is a more powerful version of update.

  3. abstract def set(a: A)(implicit trace: Trace): UIO[Unit]

    Permalink

    Writes a new value to the Ref, with a guarantee of immediate consistency (at some cost to performance).

  4. abstract def setAsync(a: A)(implicit trace: Trace): UIO[Unit]

    Permalink

    Writes a new value to the Ref without providing a guarantee of immediate consistency.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getAndSet(a: A)(implicit trace: Trace): UIO[A]

    Permalink

    Atomically writes the specified value to the Ref, returning the value immediately before modification.

  10. final def getAndUpdate(f: (A) ⇒ A)(implicit trace: Trace): UIO[A]

    Permalink

    Atomically modifies the Ref with the specified function, returning the value immediately before modification.

  11. final def getAndUpdateSome(pf: PartialFunction[A, A])(implicit trace: Trace): UIO[A]

    Permalink

    Atomically modifies the Ref with the specified partial function, returning the value immediately before modification.

    Atomically modifies the Ref with the specified partial function, returning the value immediately before modification. If the function is undefined on the current value it doesn't change it.

  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  15. final def modifySome[B](default: B)(pf: PartialFunction[A, (B, A)])(implicit trace: Trace): UIO[B]

    Permalink

    Atomically modifies the Ref with the specified partial function, which computes a return value for the modification if the function is defined on the current value otherwise it returns a default value.

    Atomically modifies the Ref with the specified partial function, which computes a return value for the modification if the function is defined on the current value otherwise it returns a default value. This is a more powerful version of updateSome.

  16. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  17. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  19. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  20. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  21. final def update(f: (A) ⇒ A)(implicit trace: Trace): UIO[Unit]

    Permalink

    Atomically modifies the Ref with the specified function.

  22. final def updateAndGet(f: (A) ⇒ A)(implicit trace: Trace): UIO[A]

    Permalink

    Atomically modifies the Ref with the specified function and returns the updated value.

  23. final def updateSome(pf: PartialFunction[A, A])(implicit trace: Trace): UIO[Unit]

    Permalink

    Atomically modifies the Ref with the specified partial function.

    Atomically modifies the Ref with the specified partial function. If the function is undefined on the current value it doesn't change it.

  24. final def updateSomeAndGet(pf: PartialFunction[A, A])(implicit trace: Trace): UIO[A]

    Permalink

    Atomically modifies the Ref with the specified partial function.

    Atomically modifies the Ref with the specified partial function. If the function is undefined on the current value it returns the old value without changing it.

  25. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped