DOT DSL

DOT DSL

中等

說明

領域特定語言(DSL)是為特定領域最佳化的小型語言。由於 DSL 有明確的目標,它能讓撰寫者宣告自己_想要什麼_,而不是_如何做_,因此能大幅提升生產力與理解度。

這類語言常被應用的一個問題領域,是複雜的自訂與設定。

舉例來說,DOT 語言讓你可以用文字描述一張圖,接著再由 Graphviz 的其中一個工具(例如 dot)把它轉換成圖片。一個簡單的圖看起來像這樣:

graph {
    graph [bgcolor="yellow"]
    a [color="red"]
    b [color="blue"]
    a -- b [color="green"]
}

把這段內容放進檔案 example.dot,然後執行 dot example.dot -T png -o example.png,就會產生一張 example.png 圖片,裡面是一個紅色和藍色的圓圈,被一條綠線連接,背景則是黃色。

請撰寫一個類似 Graphviz dot 語言的領域特定語言。

我們的 DSL 和 Graphviz dot 語言相似,因為我們的 DSL 會用來建立圖的資料結構。不過,和 DOT 語言不同的是,我們的 DSL 是內部 DSL,只能在我們的語言裡使用。

深入了解內部 DSL 與外部 DSL 的差異。

建造者模式

這道練習要你運用builder pattern建立幾個 struct。

簡單來說,這個模式讓你能把含有大量引數的 struct 建構函式,拆成幾個獨立的函式。這樣一來,你就能寫出精簡卻極具彈性的 struct 建構與設定方式。

想了解更多,可以到下列頁面閱讀相關內容喔。


出處

Wikipedia連結會在新視窗或分頁中開啟
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Rust Exercism

準備好開始 DOT DSL 了嗎?

註冊 Exercism,透過 99 個練習 和真人引導來學習並精通 Rust,全部免費。