W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在任何語言中,宏都用于生成內(nèi)聯(lián)代碼。 Clojure也不例外,為開發(fā)人員提供了簡單的宏設(shè)施。 宏用于編寫代碼生成例程,它為開發(fā)人員提供了一種強大的方法來根據(jù)開發(fā)人員的需要定制語言。
以下是一些可用于宏的方法。
此函數(shù)用于定義宏。 宏將具有宏名稱,參數(shù)列表和宏的主體。
以下是defmacro基本使用語法:
(defmacro name [params*] body)
參數(shù) - 'name'是宏的名稱。 'params'是分配給宏的參數(shù)。 “body”是宏的主體。
返回值 -無。
下面的程序顯示了如何使用它的示例。
(ns clojure.examples.example (:gen-class)) (defn Example [] (defmacro Simple [] (println "Hello")) (macroexpand '(Simple))) (Example)
以上示例輸出以下結(jié)果:
Hello
從上面的程序,你可以看到宏“簡單”擴展到“println”“你好”。 宏類似于函數(shù),唯一的區(qū)別是在宏的情況下,對表單的參數(shù)進行求值。
這用于擴展宏并將代碼放入程序中。
以下是擴展宏的基本使用語法:
(macroexpand macroname)
參數(shù) - 'macroname'是需要擴展的宏的名稱。
返回值 -擴展的宏。
下面是擴展宏的使用示例。
(ns clojure.examples.example (:gen-class)) (defn Example [] (defmacro Simple [] (println "Hello")) (macroexpand '(Simple))) (Example)
以上示例輸出以下結(jié)果:
Hello
宏也可以用于接受參數(shù)。 宏可以接受任意數(shù)量的參數(shù)。 下面的示例展示如何使用參數(shù)。
(ns clojure.examples.example (:gen-class)) (defn Example [] (defmacro Simple [arg] (list 2 arg)) (println (macroexpand '(Simple 2)))) (Example)
上面的示例在Simple宏中放置一個參數(shù),然后使用參數(shù)將參數(shù)值添加到列表中。
以上示例輸出以下結(jié)果:
(2 2)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: