TRef

zio.stm.TRef
See theTRef companion object
final class TRef[A] extends Serializable

A TRef is a purely functional description of a mutable reference that can be modified as part of a transactional effect. The fundamental operations of a TRef are set and get. set transactionally sets the reference to a new value. get gets the current value of the reference.

NOTE: While TRef provides the transactional equivalent of a mutable reference, the value inside the TRef should be immutable. For performance reasons TRef 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.

Attributes

Companion
object
Graph
Supertypes
trait Serializable
class Object
trait Matchable
class Any
Self type
TRef[A]

Members list

Value members

Deprecated constructors

def this(versioned: Versioned[A], todo: AtomicReference[Map[TxnId, Todo]])

Attributes

Deprecated
[Since version 2.1.8] kept for binary compatibility only

Concrete methods

def get: USTM[A]

Retrieves the value of the TRef.

Retrieves the value of the TRef.

Attributes

def getAndSet(a: A): USTM[A]

Sets the value of the TRef and returns the old value.

Sets the value of the TRef and returns the old value.

Attributes

def getAndUpdate(f: A => A): USTM[A]

Updates the value of the variable and returns the old value.

Updates the value of the variable and returns the old value.

Attributes

Updates some values of the variable but leaves others alone, returning the old value.

Updates some values of the variable but leaves others alone, returning the old value.

Attributes

override def hashCode(): Int

Calculates a hash code value for the object.

Calculates a hash code value for the object.

The default hashing algorithm is platform dependent.

Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

Attributes

Returns

the hash code value for this object.

Definition Classes
Any
def modify[B](f: A => (B, A)): USTM[B]

Updates the value of the variable, returning a function of the specified value.

Updates the value of the variable, returning a function of the specified value.

Attributes

def modifySome[B](default: B)(f: PartialFunction[A, (B, A)]): USTM[B]

Updates the value of the variable, returning a function of the specified value.

Updates the value of the variable, returning a function of the specified value.

Attributes

def set(a: A): USTM[Unit]

Sets the value of the TRef.

Sets the value of the TRef.

Attributes

override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
Any
def update(f: A => A): USTM[Unit]

Updates the value of the variable.

Updates the value of the variable.

Attributes

def updateAndGet(f: A => A): USTM[A]

Updates the value of the variable and returns the new value.

Updates the value of the variable and returns the new value.

Attributes

Updates some values of the variable but leaves others alone.

Updates some values of the variable but leaves others alone.

Attributes

Updates some values of the variable but leaves others alone, returning the new value.

Updates some values of the variable but leaves others alone, returning the new value.

Attributes