Packages

final class RefM[A] extends Serializable

A mutable atomic reference for the IO monad. This is the IO equivalent of a volatile var, augmented with atomic effectful operations, which make it useful as a reasonably efficient (if low-level) concurrency primitive.

Unlike Ref, RefM allows effects in atomic operations, which makes the structure slower but more powerful than Ref.

for {
  ref <- RefM(2)
  v   <- ref.update(_ + putStrLn("Hello World!").attempt.unit *> IO.succeed(3))
  _   <- putStrLn("Value = " + v) // Value = 5
} yield ()
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. RefM
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. def get: UIO[A]

    Reads the value from the Ref.

    Reads the value from the Ref.

    returns

    UIO[A] value from the Ref

  10. def getAndSet(a: A): UIO[A]

    Writes a new value to the RefM, returning the value immediately before modification.

    Writes a new value to the RefM, returning the value immediately before modification.

    a

    value to be written to the RefM

    returns

    UIO[A] value of the RefM immediately before modification

  11. def getAndUpdate[R, E](f: (A) ⇒ ZIO[R, E, A]): ZIO[R, E, A]

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

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

    R

    environment of the effect

    E

    error type

    f

    function to atomically modify the RefM

    returns

    ZIO[R, E, A] value of the RefM immediately before modification

  12. def getAndUpdateSome[R, E](pf: PartialFunction[A, ZIO[R, E, A]]): ZIO[R, E, A]

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

    Atomically modifies the RefM 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.

    R

    environment of the effect

    E

    error type

    pf

    partial function to atomically modify the RefM

    returns

    ZIO[R, E, A] value of the RefM immediately before modification

  13. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. def modify[R, E, B](f: (A) ⇒ ZIO[R, E, (B, A)]): ZIO[R, E, B]

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

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

    R

    environment of the effect

    E

    error type

    B

    type of the RefM

    f

    function which computes a return value for the modification

    returns

    ZIO[R, E, B] modified value of the RefM

  17. def modifySome[R, E, B](default: B)(pf: PartialFunction[A, ZIO[R, E, (B, A)]]): ZIO[R, E, B]

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

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

    R

    environment of the effect

    E

    error type

    B

    type of the RefM

    default

    default value to be returned if the partial function is not defined on the current value

    pf

    partial function to be computed on the current value if defined on the current value

    returns

    ZIO[R, E, B] modified value of the RefM

  18. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  21. def set(a: A): UIO[Unit]

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

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

    a

    value to be written to the RefM

    returns

    UIO[Unit]

  22. def setAsync(a: A): UIO[Unit]

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

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

    a

    value to be written to the RefM

    returns

    UIO[Unit]

  23. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  24. def toString(): String
    Definition Classes
    AnyRef → Any
  25. def update[R, E](f: (A) ⇒ ZIO[R, E, A]): ZIO[R, E, Unit]

    Atomically modifies the RefM with the specified function.

    Atomically modifies the RefM with the specified function.

    R

    environment of the effect

    E

    error type

    f

    function to atomically modify the RefM

    returns

    ZIO[R, E, Unit]

  26. def updateAndGet[R, E](f: (A) ⇒ ZIO[R, E, A]): ZIO[R, E, A]

    Atomically modifies the RefM with the specified function, returning the value immediately after modification.

    Atomically modifies the RefM with the specified function, returning the value immediately after modification.

    R

    environment of the effect

    E

    error type

    f

    function to atomically modify the RefM

    returns

    ZIO[R, E, A] modified value of the RefM

  27. def updateSome[R, E](pf: PartialFunction[A, ZIO[R, E, A]]): ZIO[R, E, Unit]

    Atomically modifies the RefM with the specified partial function.

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

    R

    environment of the effect

    E

    error type

    pf

    partial function to atomically modify the RefM

    returns

    ZIO[R, E, Unit]

  28. def updateSomeAndGet[R, E](pf: PartialFunction[A, ZIO[R, E, A]]): ZIO[R, E, A]

    Atomically modifies the RefM with the specified partial function.

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

    R

    environment of the effect

    E

    error type

    pf

    partial function to atomically modify the RefM

    returns

    ZIO[R, E, A] modified value of the RefM

  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped