Class/Object

scalaz.zio

RefM

Related Docs: object RefM | package zio

Permalink

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.void *> IO.succeed(3))
  _   <- putStrLn("Value = " + v) // Value = 5
} yield ()
Linear Supertypes
Serializable, Serializable, AnyRef, Any
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

    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 get: IO[Nothing, A]

    Permalink

    Reads the value from the Ref.

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

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

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

    Permalink
    Definition Classes
    Any
  13. final def modify[B](f: (A) ⇒ IO[Nothing, (B, A)]): IO[Nothing, B]

    Permalink

    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.

  14. final def modifySome[B](default: B)(pf: PartialFunction[A, IO[Nothing, (B, A)]]): IO[Nothing, B]

    Permalink

    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.

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

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

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

    Permalink
    Definition Classes
    AnyRef
  18. final def set(a: A): IO[Nothing, Unit]

    Permalink

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

  19. final def setAsync(a: A): IO[Nothing, Unit]

    Permalink

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

  20. final def synchronized[T0](arg0: ⇒ T0): T0

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

    Permalink
    Definition Classes
    AnyRef → Any
  22. final def update(f: (A) ⇒ IO[Nothing, A]): IO[Nothing, A]

    Permalink

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

  23. final def updateSome(pf: PartialFunction[A, IO[Nothing, A]]): IO[Nothing, A]

    Permalink

    Atomically modifies the RefM with the specified partial function.

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

  24. final def wait(): Unit

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. 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