我知道玩转用于生成包含可以在运行时调用的模板函数的Scala源。
有没有一种方法可以生成任意的Scala源文件?
,例如
我想通过创建一个模板来自动创建一些乏味的方法签名,比如
src/main/twirl/Foos.scala.scala
object Foos {
@for(i <- 2 to 22){
def foo@i[@(...)](chain: @(...)) = @(...)
}
}并有一个由SBT生成的源文件,如
src_managed/main/scala/Foos.scala
object Foos {
def foo2[A1, A2](chain: A1 ~ A2) = chain match { case a1 ~ a2 => (a1, a2) }
def foo3[A1, A2, A3](chain: A1 ~ A2 ~ A3) = ...
....
def foo22[A1, ..., A22] ....
}基于一些Playframework库源,看起来他们正在使用他们自己的模板框架来做类似的事情,尽管看起来并不是自动化的。
因此,重申这个问题,这种类型的设置是否可能使用Twirl?有没有其他的sbt插件可以让这种事情变得更容易呢?
发布于 2015-11-06 22:23:47
除了写我自己的SBT逻辑,Twirl似乎无法完成我想要的事情。
我确实在sbt-样板中找到了一个有用的替代方案。使用那个插件,我可以完全完成我想要的东西。
src/main/样板/Foos.scala.Template
object Foos {
[2..22#def foo1[[#A1#]](chain: [#A1# ~ ]) = chain match { case [#a1# ~ ] => ([#a1#]) }
#]
}扩展到
目标/Scala-2.xx/src_managed/main/foos.scala
object Foos {
def foo2[A1, A2](chain: A1 ~ A2) = chain match { case a1 ~ a2 => (a1, a2) }
def foo3[A1, A2, A3] ...
...
def foo22[A1, ..., A22] ...
}https://stackoverflow.com/questions/33559305
复制相似问题