Clojure - 代理 (dài lǐ)



正如多次指出的那樣,Clojure 是一種程式語言,其中許多資料型別都是不可變的,這意味著更改變數值的唯一方法是建立一個新變數並將新值賦給它。但是,Clojure確實提供了一些可以建立可變狀態的元素。我們已經看到這可以透過原子資料型別來實現。另一種實現方法是透過代理。

代理 (dài lǐ) 提供單個位置的獨立非同步更改。代理在其生命週期內繫結到單個儲存位置,並且僅允許作為操作結果對該位置(到新狀態)進行變異。操作是非同步應用於代理狀態的函式(可選地,帶有其他引數),其返回值成為代理的新狀態。

關於代理,Clojure 中可以執行以下操作。

序號 (xué hào) 操作和描述 (cāo zuò hé miáo shù)
1 agent

使用 agent 命令建立代理。

2 send

此函式用於向代理傳送值。

3 shutdown-agents

此函式用於關閉任何正在執行的代理。

4 send-off

在某些情況下,代理被分配一個阻塞性質的函式。

5 await-for

由於更新代理的值時存在延遲,Clojure 提供了一個“await-for”函式,用於指定以毫秒為單位等待代理更新的時間。

6 await

阻塞當前執行緒(無限期!),直到來自此執行緒或代理到代理的所有已分派操作都已發生。將阻塞失敗的代理。

7 agent-error

如果代理失敗,則返回在代理的非同步操作期間引發的異常。如果代理不失敗,則返回 nil。

廣告 (guǎng gào)
© . All rights reserved.