Var

trait Var[A] extends SignalSource[A] with Sink[A] with Named

Var is essentially a Signal that you can write to, so it's a source of state like EventBus is a source of events.

There are two kinds of Vars: SourceVar and DerivedVar. The latter you can obtain by calling zoom(a => b, b => a) on a Var, however, unlike SourceVar, DerivedVar requires an Owner in order to run.

Companion:
object
trait Named
trait Sink[A]
trait SignalSource[A]
trait Source[A]
class Object
trait Matchable
class Any
class DerivedVar[A, B]
class SourceVar[A]

Value members

Concrete methods

def now(): A
Throws:
Exception

if currentValue is a Failure

final def set(value: A): Unit
final def setError(error: Throwable): Unit
def setTry(tryValue: Try[A]): Unit
def someWriter[V](implicit evidence: Option[V] <:< A): Observer[V]

Write values into a Var of Option[V] without manually wrapping in Some()

Write values into a Var of Option[V] without manually wrapping in Some()

override def toObservable: Signal[A]
Definition Classes
override def toObserver: Observer[A]
Definition Classes
def tryNow(): Try[A]
def tryUpdate(mod: Try[A] => Try[A]): Unit
Value parameters:
mod

Note: must not throw

def tryUpdater[B](mod: (Try[A], B) => Try[A]): Observer[B]
Value parameters:
mod

(currValue, nextInput) => nextValue Note: Must not throw!

def update(mod: A => A): Unit

Do not use on failed Vars. Use tryUpdate on those.

Do not use on failed Vars. Use tryUpdate on those.

Value parameters:
mod

Note: guarded against exceptions

def updater[B](mod: (A, B) => A): Observer[B]

An observer much like writer, but can compose input events with the current value of the var, for example:

An observer much like writer, but can compose input events with the current value of the var, for example:

val v = Var(List(1, 2, 3)) val appender = v.updater((acc, nextItem) => acc :+ nextItem) appender.onNext(4) // v now contains List(1, 2, 3, 4)

Do not use on failed Vars. Use tryUpdater on those.

Value parameters:
mod

(currValue, nextInput) => nextValue

def zoom[B](in: A => B)(out: (A, B) => A)(implicit owner: Owner): Var[B]

Inherited methods

protected def defaultDisplayName: String

This is the method that subclasses override to preserve the user's ability to set custom display names.

This is the method that subclasses override to preserve the user's ability to set custom display names.

Inherited from:
Named
final def displayName: String
Inherited from:
Named
def setDisplayName(name: String): Named.this.type

Set the display name for this instance (observable or observer).

Set the display name for this instance (observable or observer).

  • This method modifies the instance and returns this. It does not create a new instance.
  • New name you set will override the previous name, if any. This might change in the future. For the sake of sanity, don't call this more than once for the same instance.
  • If display name is set, toString will output it instead of the standard type@hashcode string
Inherited from:
Named
final override def toString: String

Override defaultDisplayName instead of this, if you need to.

Override defaultDisplayName instead of this, if you need to.

Definition Classes
Named -> Any
Inherited from:
Named

Abstract fields

Concrete fields