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.

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

@inline
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](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
@inline
def tryNow(): Try[A]
def tryUpdate(mod: Try[A] => Try[A]): Unit
Value Params
mod

Note: must not throw

Throws
Exception

if mod throws

def tryUpdater[B](mod: (Try[A], B) => Try[A]): Observer[B]
Value Params
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 Params
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 Params
mod

(currValue, nextInput) => nextValue

def zoom[B](in: A => B)(out: B => A)(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): Var[A]

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

val writer: Observer[A]