Clojure - Agen
Seperti yang ditunjukkan berkali-kali, Clojure adalah bahasa pemrograman di mana banyak tipe datanya tidak dapat diubah, yang berarti bahwa satu-satunya cara seseorang dapat mengubah nilai variabel adalah dengan membuat variabel baru dan menetapkan nilai baru padanya. Namun, Clojure memang menyediakan beberapa elemen, yang bisa membuat keadaan bisa berubah. Kita telah melihat bahwa ini dapat dicapai dengan tipe data atom. Cara lain untuk melakukannya adalah melalui Agen.
Agentsmenyediakan perubahan lokasi individu yang independen dan tidak sinkron. Agen terikat ke satu lokasi penyimpanan seumur hidup mereka, dan hanya mengizinkan mutasi lokasi itu (ke keadaan baru) terjadi sebagai hasil dari suatu tindakan. Tindakan adalah fungsi (dengan, opsional, argumen tambahan) yang diterapkan secara asinkron ke status Agen dan yang nilai kembaliannya menjadi status baru Agen.
Operasi berikut dapat dilakukan di Clojure sehubungan dengan Agen.
Sr.No. | Operasi & Deskripsi |
---|---|
1 | agen Agen dibuat dengan menggunakan perintah agen. |
2 | Kirim Fungsi ini digunakan untuk mengirimkan nilai ke agen. |
3 | shutdown-agent Fungsi ini digunakan untuk mematikan semua agen yang sedang berjalan. |
4 | mengirim Ada beberapa contoh di mana seorang agen diberi fungsi yang sifatnya memblokir. |
5 | menunggu-untuk Karena ada penundaan saat nilai agen diperbarui, Clojure menyediakan fungsi 'await-for' yang digunakan untuk menentukan waktu dalam milidetik untuk menunggu agen diperbarui. |
6 | menunggu Memblokir thread saat ini (tanpa batas!) Hingga semua tindakan yang dikirim sejauh ini, dari thread atau agen ini, ke agen telah terjadi. Akan memblokir agen yang gagal. |
7 | agen-kesalahan Mengembalikan pengecualian yang muncul selama tindakan asynchronous agen, jika agen gagal. Mengembalikan nol jika agen tidak gagal. |