Scala Library
|
|
scala/util/DynamicVariable.scala
]
class
DynamicVariable[T](init : T)
extends
AnyRefDynamicVariables provide a binding mechanism where the current value is found through dynamic scope, but where access to the variable itself is resolved through static scope.
The current value can be retrieved with the
value
method. New values should be
pushed using the withValue
method.
Values pushed via withValue
only
stay valid while the withValue
's
second argument, a parameterless closure,
executes. When the second argument finishes,
the variable reverts to the previous value.
Usage of withValue
looks like this:
someDynamicVariable.withValue(newValue) { // ... code called in here that calls value ... // ... will be given back the newValue ... }
Each thread gets its own stack of bindings. When a new thread is created, the DynamicVariable gets a copy of the stack of bindings from the parent thread, and from then on the bindings for the new thread are independent of those for the original thread.
Method Summary | |
override def
|
toString
: java.lang.String
Returns a string representation of the object.
|
def
|
value
: T
Retrieve the current value
|
def
|
value_=
(newval : T) : Unit
Change the currently bound value, discarding the old value.
Usually
withValue() gives better semantics. |
def
|
withValue
[S](newval : T)(thunk : => S) : S
Set the value of the variable while executing the specified
thunk.
|
Methods inherited from AnyRef | |
getClass, hashCode, equals, clone, notify, notifyAll, wait, wait, wait, finalize, ==, !=, eq, ne, synchronized |
Methods inherited from Any | |
==, !=, isInstanceOf, asInstanceOf |
Method Details |
def
value : T
newval -
The value to which to set the variablethunk -
The code to evaluate under the new settingwithValue()
gives better semantics.override
def
toString : java.lang.String
The default representation is platform dependent.
Scala Library
|
|