Clojure - Đại lý
Như đã chỉ ra nhiều lần, Clojure là một ngôn ngữ lập trình trong đó nhiều kiểu dữ liệu là bất biến, có nghĩa là cách duy nhất người ta có thể thay đổi giá trị của một biến là tạo một biến mới và gán giá trị mới cho nó. Tuy nhiên, Clojure cung cấp một số yếu tố, có thể tạo ra trạng thái có thể thay đổi. Chúng tôi đã thấy rằng điều này có thể đạt được với kiểu dữ liệu nguyên tử. Cách khác có thể đạt được điều này là thông qua Đại lý.
Agentscung cấp sự thay đổi độc lập, không đồng bộ của các vị trí riêng lẻ. Các tác nhân bị ràng buộc với một vị trí lưu trữ duy nhất trong suốt thời gian của họ và chỉ cho phép vị trí đó (sang trạng thái mới) xảy ra đột biến do một hành động. Hành động là các hàm (với, tùy chọn, các đối số bổ sung) được áp dụng không đồng bộ cho trạng thái của Tác nhân và giá trị trả về của nó trở thành trạng thái mới của Tác nhân.
Các thao tác sau đây có thể thực hiện được trong Clojure liên quan đến Đại lý.
Sr.No. | Hoạt động & Mô tả |
---|---|
1 | đặc vụ Tác nhân được tạo bằng cách sử dụng lệnh tác nhân. |
2 | gửi Chức năng này được sử dụng để gửi một giá trị đến tác nhân. |
3 | tác nhân tắt máy Chức năng này được sử dụng để tắt mọi tác nhân đang chạy. |
4 | tiễn đưa Có những trường hợp trong đó tác nhân được chỉ định một chức năng có bản chất là chặn. |
5 | đang chờ đợi Vì có độ trễ khi giá trị của một tác nhân được cập nhật, Clojure đã cung cấp một hàm 'await-for' được sử dụng để chỉ định thời gian tính bằng mili giây để đợi tác nhân được cập nhật. |
6 | chờ đợi Chặn luồng hiện tại (vô thời hạn!) Cho đến khi tất cả các hành động được gửi cho đến nay, từ luồng hoặc tác nhân này, đến (các) tác nhân đã xảy ra. Sẽ chặn trên các đại lý không thành công. |
7 | lỗi tác nhân Trả về ngoại lệ được đưa ra trong một hành động không đồng bộ của tác nhân, nếu tác nhân không thành công. Trả về nil nếu tác nhân không bị lỗi. |