Clojure 代理

2018-12-27 17:11 更新

正如多次指出的,Clojure是一種編程語言,其中許多數(shù)據(jù)類型是不可變的,這意味著唯一可以更改變量值的方法是創(chuàng)建一個新變量并為其分配新值。 但是,Clojure提供了一些元素,它們可以創(chuàng)建一個可變狀態(tài)。 我們已經(jīng)看到,這可以通過原子數(shù)據(jù)類型實現(xiàn)。 可以實現(xiàn)的另一種方式是通過代理。

代理提供單獨位置的獨立,異步更改。 代理綁定到單個存儲位置的一生,并且只允許該位置的突變(到新的狀態(tài))作為動作的結(jié)果發(fā)生。 操作是異步應(yīng)用于代理狀態(tài)并且其返回值成為代理的新狀態(tài)的函數(shù)(帶可選的附加參數(shù))。

在Clojure中有關(guān)代理的以下操作是可能的。

S.No.方法和說明
agent使用agent命令創(chuàng)建代理。
send此函數(shù)用于向代理發(fā)送一個值。
shutdown-agents此功能用于關(guān)閉所有正在運行的代理。
send-off存在這樣的情況,其中給代理分配本質(zhì)上是阻塞的功能。
await-for由于代理的值被更新時存在延遲,因此Clojure提供了一個“await-for”函數(shù),用于指定等待代理更新的時間(以毫秒為單位)。
await阻塞當前線程(無限期?。?,直到從此線程或代理到目前為止所有分派到代理的動作發(fā)生。 將阻止失敗的代理。
agent-error返回在代理的異步操作期間拋出的異常(如果代理失?。?。 如果代理不失敗,則返回nil。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號