Clojure 代理

2018-12-27 17:11 更新

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)