2013-05-02 48 views
3

階宏的文檔是很難理解的,所以我想,如果一個人想在現實情況下使用它,必須有一定的背景知識。如何理解和使用階宏,寫一個更復雜的功能

我問這些知識是什麼的幫助。

c.Expr[Unit](Block(treesWithSeparators.toList, Literal(Constant(())))) 

它是一個宏代碼片段,並且對於Block的含義和其他類似術語幾乎沒有可用的信息。如果這些關鍵點丟失,很難深入。

所以如果有人知道那裏存在一個更詳細的文檔或教程,請告訴我,謝謝:)

回答

2

很難深入的,如果這些關鍵點丟失。

是的,這是真的,但不是每個人都可以進入宏。它們是一個強大的功能,完全不理解它們的用戶不應該使用它們。

潛入宏需要大量的自學習,有學習他們是如何工作的,以及如何與他們合作,沒有簡單的方法。

不過已經有很多有用的文檔在那裏。例如這個問題,想知道如何理解AST:Where can I learn about constructing AST's for Scala macros?

對對方這個問題給出瞭如何與reify工作的一些值:What's the easiest way to use reify (get an AST of) an expression in Scala?

在docs.scala-lang.org存在出色的overview可用,描述了宏可以做什麼和不可以做什麼。 official homepage也包含很多有用的信息。

這裏閱讀在計算器上進一步的問題,看在GitHub上的源代碼或搜索上宏博客文章的網頁不應該是困難的。

在開始階段,這應該是足以找到一種方式進入宏地獄。

+1

我想加階反射[概述](http://docs.scala-lang.org/overviews/reflection/overview.html),它覆蓋[符號,樹木和類型](HTTP:// docs.scala-lang.org/overviews/reflection/symbols-trees-types.html)。該部分可能有助於理解「Block」的含義。 – jeslg 2013-05-02 13:05:52

+0

是的,好點。 – sschaef 2013-05-02 14:08:30