我有一个程序,有很多样板代码(不幸的是,即使使用Scala机制也无法减少)。但是如果有一种方法可以通过宏生成复杂的顶级类,所有的样板代码都将消失。例如:
package org.smth
generate(params)
// becomes
class A { ... }
object B { ... }
case class C { ... }
能否使用Scala 2.10宏实现这一点?
我有一个程序,有很多样板代码(不幸的是,即使使用Scala机制也无法减少)。但是如果有一种方法可以通过宏生成复杂的顶级类,所有的样板代码都将消失。例如:
package org.smth
generate(params)
// becomes
class A { ... }
object B { ... }
case class C { ... }
object
)可以嵌套,这并不是限制:您可以仅生成包含所需所有类的单个顶级object
。这与您的代码之间的区别基本上是一个额外的import
语句。package org.smth
type O = Generate(params)
// becomes
object O {
class A { ... }
object B { ... }
case class C { ... }
}
// which means you need an additional
import O._
package
宏,但是他们意识到由于object
是package
的超集,并且类型宏可以生成object
,所以这并不是必要的。
val a = { class A { ... }; new A smth }
? - Rogach