Clojure - Macro

Bằng bất kỳ ngôn ngữ nào, Macrosđược sử dụng để tạo mã nội tuyến. Clojure cũng không ngoại lệ và cung cấp các tiện ích vĩ mô đơn giản cho các nhà phát triển. Macro được sử dụng để viết các quy trình tạo mã, cung cấp cho nhà phát triển một cách mạnh mẽ để điều chỉnh ngôn ngữ theo nhu cầu của nhà phát triển.

Sau đây là các phương pháp có sẵn cho Macro.

defmacro

Hàm này được sử dụng để xác định macro của bạn. Macro sẽ có tên macro, danh sách tham số và nội dung của macro.

Cú pháp

Sau đây là cú pháp.

(defmacro name [params*] body)

Parameters- 'name' là tên của macro. 'params' là các tham số được gán cho macro. 'body' là phần thân của macro.

Return Value - Không.

Thí dụ

Ví dụ về cách sử dụng điều này được hiển thị trong chương trình sau.

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (defmacro Simple []
      (println "Hello"))
   (macroexpand '(Simple)))
(Example)

Đầu ra

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

Hello

Từ chương trình trên, bạn có thể thấy rằng macro 'Đơn giản' được mở rộng nội dòng thành 'println' "Xin chào". Macro tương tự như các hàm, với sự khác biệt duy nhất là các đối số của một biểu mẫu được đánh giá trong trường hợp macro.

mở rộng vĩ mô

Điều này được sử dụng để mở rộng macro và đặt mã nội tuyến trong chương trình.

Cú pháp

Sau đây là cú pháp.

(macroexpand macroname)

Parameters - 'macroname' là tên của macro cần được mở rộng.

Return Value - Macro mở rộng.

Thí dụ

Ví dụ về cách sử dụng điều này được hiển thị trong chương trình sau.

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (defmacro Simple []
      (println "Hello"))
   (macroexpand '(Simple)))
(Example)

Đầu ra

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

Hello

Macro có đối số

Macro cũng có thể được sử dụng để nhận các đối số. Macro có thể nhận bất kỳ số lượng đối số nào. Ví dụ sau trình bày cách sử dụng các đối số.

Thí dụ

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (defmacro Simple [arg]
      (list 2 arg))
   (println (macroexpand '(Simple 2))))
(Example)

Ví dụ trên đặt một đối số trong macro Đơn giản và sau đó sử dụng đối số để thêm giá trị đối số vào danh sách.

Đầu ra

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

(2 2)