首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Twirl模板生成Scala源

从Twirl模板生成Scala源
EN

Stack Overflow用户
提问于 2015-11-06 04:03:50
回答 1查看 737关注 0票数 2

我知道玩转用于生成包含可以在运行时调用的模板函数的Scala源。

有没有一种方法可以生成任意的Scala源文件?

,例如

我想通过创建一个模板来自动创建一些乏味的方法签名,比如

src/main/twirl/Foos.scala.scala

代码语言:javascript
复制
object Foos {
  @for(i <- 2 to 22){
  def foo@i[@(...)](chain: @(...)) = @(...)
  }
}

并有一个由SBT生成的源文件,如

src_managed/main/scala/Foos.scala

代码语言:javascript
复制
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插件可以让这种事情变得更容易呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 22:23:47

除了写我自己的SBT逻辑,Twirl似乎无法完成我想要的事情。

我确实在sbt-样板中找到了一个有用的替代方案。使用那个插件,我可以完全完成我想要的东西。

src/main/样板/Foos.scala.Template

代码语言:javascript
复制
object Foos {
  [2..22#def foo1[[#A1#]](chain: [#A1# ~ ]) = chain match { case [#a1# ~ ] => ([#a1#]) }
  #]
}

扩展到

目标/Scala-2.xx/src_managed/main/foos.scala

代码语言:javascript
复制
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] ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33559305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档