scala-macros

    3熱度

    1回答

    我使用ORM模型的案例類。每個模型都有一個ID,但該ID不應公開訪問。所以我有一個父特徵 trait WithId { private var id: Long = 0 } 和大量的case類(模型)的繼承了它現在 case class C1(a: Int, b: String) extends WithId case class C2(...) extends WithId

    2熱度

    1回答

    定義Scala宏時,是否有符號或類型轉換爲樹? 具體來說,該場景需要查找伴隨對象上的文字。 在Scala代碼,這看起來是這樣的: class Fred(a: String) object Fred { val FredDescription = "hello" } 在宏我有機會獲得弗雷德的WeakTypeTag,可以用它來獲取訪問的伴侶,它的類型簽名: context.univ

    1熱度

    1回答

    假設我有一個宏實現 def testImpl[T](c:Context)(implicit wtt:c.WeakTypeTag[T]):c.Tree = { import c.universe._ def info(msg: Any) = c.info(c.enclosingPosition, msg.toString, true) val parameter =

    2熱度

    1回答

    假設我有兩個宏觀註解類,後擴張期間他們的字段定義,一個依賴於其它: @Annotation case class A(i: Int) @Annotation case class B(a: A) 我需要AB之前張開,但順序他們的定義並不能確保。 例如,在一個不相關的編譯單元到B的引用作爲一個類型參數的一個對象,如: 在一個文件中,而在另一個class Y{Z[B]}class X{val b =

    0熱度

    1回答

    這放氣和地圖位映射數據庫列階對象是延續到下面的帖子: How to combine multiple columns in one case class field when using lifted embedding? 我是位字段的忠實球迷,希望在我使用slick-macros的項目中使用這個邏輯。不幸的是,slick-additions沒有完全更新到slick 2.0,有一個不穩定的分支,實

    1熱度

    1回答

    如何從宏內部看到符號的定義? 作爲一個特例,我想知道如何在編譯時使用宏評估常量值。 我的方法也適用於「最終VAL」而不是當地的「VAL」: // scalaVersion := "2.11.0" import scala.reflect.macros.blackbox.Context import scala.language.experimental.macros object Cons

    6熱度

    1回答

    我在回答this question。 而是寫的: case class Person(name: String, age: Int) { def this() = this("",1) } 我想我會用宏註釋從展開: @Annotation case class Person(name: String, age: Int) 所以我嘗試添加新的構造函數作爲一個純老DefDef使用

    0熱度

    1回答

    我有一個Scala宏註釋,它在編譯時向類MyRecord添加一個val「x」。 我也得到了一些Java代碼,它使用MyRecord.class.getDeclaredField(x)來獲取添加字段的值。 javap MyRecord.class顯示添加的字段確實是public,但是Java代碼引發錯誤,抱怨它是private final。 Here是一個簡化項目,顯示Java反射返回private

    11熱度

    2回答

    對scala宏執行測試的建議方式是什麼? 我意識到需要兩個項目,因爲需要單獨編譯。如果有必要,這一步是可以接受的,而且大部分是清楚的 但是,你應該如何聲明宏擴展失敗呢?如果沒有特殊的設施,測試用例將無法編譯,因此整個測試項目將無法編譯。 我覺得這個斷言需要形式 errors(code: => _): List[CompileError] 返回內宏的編譯錯誤的另一個宏。測試也需要相同的警告,如果

    0熱度

    1回答

    鑑於(斯卡拉2.10.3), package models @MyAnnotation case class MyClass() 我如何在宏的IMPL包的名稱? 我已經試過: 1)typeCheck像有人建議here,但導致堆棧溢出(雖然我可以看到它噴出了正確的全名)。 val result = { annottees.map(_.tree).toList match {