2015-11-18 44 views
0

我使用TreeHugger在運行時生成代碼。我找不到許多與之相關的文件。我的問題是,如果我使用treehugger生成類,我將來能夠訪問這些類嗎?使用TreeHugger scala生成代碼

準確地說:我想讀取來自CSV等文件的數據並在運行時創建類。我可以在將來使用這個類,比如在運行時生成的下一個類中。

我對scala非常陌生,請原諒,如果我不清楚解釋。

非常感謝!

回答

1

我已經做了類似的事情,所以我會分享我所瞭解到:

Treehugger最終產生在運行時代碼(串)在隨後的單獨運行使用(或我假設是在運行時評估,但我從來沒有得到這個工作)。

所以行動的過程取決於你所說的「運行」是什麼:

  1. 是您的.csv文件在運行時可用?如果你可以在編譯時訪問這些文件(通常是這樣),那麼你的兩個選項就是例子:實驗性的(scala macros)或傳統的(sbt plugin) - 兩種方法都很相似,但有着微妙的優點和缺點。

  2. 如果您只能在運行時訪問文件,但仍然需要生成並「鍵入」這些類並使編譯器期望它們,那麼在我看來,有人犯了一個糟糕的設計錯誤!但是如果你發現自己陷入這種情況,那麼可以在運行時使用字節碼工程庫和一些類型檢查器黑魔法(runtime type provider)來定義和加載類。

+0

謝謝@Julian Peeters,你的第二個選擇是我所需要的!它幫助我排除了使用TreeHugger實現我想要的功能的可能性。我將嘗試在運行時定義和加載類。 – ssri