Clojure - Nguyên tử

Atomslà một kiểu dữ liệu trong Clojure cung cấp cách quản lý trạng thái được chia sẻ, đồng bộ, độc lập. Một nguyên tử cũng giống như bất kỳ kiểu tham chiếu nào trong bất kỳ ngôn ngữ lập trình nào khác. Công dụng chính của nguyên tử là giữ các cấu trúc dữ liệu bất biến của Clojure. Giá trị được giữ bởi một nguyên tử được thay đổi vớiswap! method.

Nội bộ, hoán đổi! đọc giá trị hiện tại, áp dụng chức năng cho nó và cố gắng so sánh và đặt nó vào. Vì một luồng khác có thể đã thay đổi giá trị trong thời gian xen kẽ, nó có thể phải thử lại và làm như vậy trong một vòng quay. Hiệu quả thực là giá trị sẽ luôn là kết quả của việc áp dụng hàm đã cung cấp cho giá trị hiện tại, về mặt nguyên tử.

Thí dụ

Nguyên tử được tạo ra với sự trợ giúp của phương pháp nguyên tử. Một ví dụ tương tự được hiển thị trong chương trình sau.

(ns clojure.examples.example
   (:gen-class))
(defn example []
   (def myatom (atom 1))
   (println @myatom))
(example)

Đầu ra

Chương trình trên tạo ra kết quả sau.

1

Giá trị của nguyên tử được truy cập bằng cách sử dụng ký hiệu @. Clojure có một số hoạt động có thể được thực hiện trên các nguyên tử. Sau đây là các hoạt động.

Sr.No. Hoạt động & Mô tả
1 cài lại!

Đặt giá trị của nguyên tử thành giá trị mới mà không quan tâm đến giá trị hiện tại.

2 so sánh và đặt!

Nguyên tử đặt giá trị của nguyên tử thành giá trị mới khi và chỉ khi giá trị hiện tại của nguyên tử trùng với giá trị cũ mà nguyên tử đó nắm giữ. Trả về true nếu bộ xảy ra, nếu không thì trả về false.

3 hoán đổi!

Nguyên tử hoán đổi giá trị của nguyên tử với một giá trị mới dựa trên một chức năng cụ thể.