Julia 元程式設計 巨集

2021-09-06 03:38:51 字數 710 閱讀 8720

元程式設計(鼻祖是lisp)一直在語法上和書寫上特立獨行,其功能也和一般的函式不一樣,與從不同。

這個你需要去體會。比如反射。

有人喜歡「用程式生成程式」等描述。

比如,沒有事先定義乙個類或函式,但是可以根據客戶輸入的資訊,動態生成相應的類或函式。這個有點象c++的「模版」。

比如,你輸入引數input =[「name」,「book」,「price」,「publish date」,…],可以生成乙個新的類。但是,在此前,模版並不知道「輸入」什麼內容。

函式也是一樣的,我們一般情況下,函式是要先寫好,再呼叫的。元程式設計則具備這種能力,也許是你輸入什麼名字串,就生成什麼樣的函式簽名。

元程式設計的本質是**「書寫」**的能力。

元程式設計與巨集

巨集也是一種特殊的函式,julia的巨集會在函式簽名前面加乙個「@」,rust則不同,會在函式簽名後加乙個「!」。

巨集也有這樣「操作**」的神奇能力。

大家最熟悉@time

macro time(ex)

return quote

local t0 = time()

local val = $ex # 一段**

local t1 = time()

println("elapsed time: ", t1-t0, " seconds")

valend

end

進一步閱讀:

julia學習筆記 元程式設計 巨集 macro

巨集像是乙個函式,這個函式接受一組引數返回乙個表示式。乙個簡單的巨集定義 julia macro sayhello name return println hello,name end sayhello macro with 1 method 這個巨集接收乙個引數並返回乙個表示式列印一句話,呼叫 j...

巨集元程式設計 技術 auto rec

auto rec巨集會快速探測滿足探測謂詞條件的 序號 最小的巨集。如果滿足條件會走實線深度往下探測,當遇到不滿足條件會走虛線。下面以探測16以內的 序號 define tl node 16 p tl if p 16 tl node 8,tl node 24 define tl node 8 p t...

巨集與125元

今年7月初,我作為課程設計的一名負責人,領導了乙個連我在內4人的開發團隊,開發了乙個簡易的 航班訂票系統 我定義了所需的資料結構,包括這樣乙個struct typedef struct passenger passenger,ppassenger 這之後每每要新建結點的時候,都得這麼寫 ppasse...