ClojureDocs

导航

命名空间

deref

clojure.core

自 1.0 版本起可用 ()
  • (deref ref)
  • (deref ref timeout-ms timeout-val)
Also reader macro: @ref/@agent/@var/@atom/@delay/@future/@promise. Within a transaction,
returns the in-transaction-value of ref, else returns the
most-recently-committed value of ref. When applied to a var, agent
or atom, returns its current state. When applied to a delay, forces
it if not already forced. When applied to a future, will block if
computation not complete. When applied to a promise, will block
until a value is delivered.  The variant taking a timeout can be
used for blocking references (futures and promises), and will return
timeout-val if the timeout (in milliseconds) is reached before a
value is available. See also - realized?.
3 Examples
user=> (def a (atom 0))
#'user/a
user=> @a
0
user=> (deref a)
0

user=> (def b (ref 1))
#'user/b
user=> @b
1
user=> (deref b)
1

user=> (def c (agent 2))
#'user/c
user=> @c
2
user=> (deref c)
2

user=> (def d (future 3))
#'user/d
user=> @d
3
user=> (deref d)
3
user=> (def a (promise))
#'user/a
user=> (deref a) ;; blocking until a delivery occurs <ctrl-c>

user=> (deref a 100 :timeout) ;; block for at most 100ms
:timeout
user=> (def b 1)
#'user/b
user=> (var b)
#'user/b
user=> (deref (var b))
1
See Also

Creates and returns an Atom with an initial value of x and zero or more options (in any order): ...

Creates and returns an agent with an initial value of state and zero or more options (in any order...

Creates and returns a Ref with an initial value of x and zero or more options (in any order): :...

Returns true if a value has been produced for a promise, delay, future or lazy sequence.

Added by delonnewman

Takes a body of expressions and yields a future object that will invoke the body in another thread...

Added by l3nz
0 Notes
No notes for deref