【问题标题】:Scala convert Seq to k, v of sbt.Project.Setting[_]Scala 将 Seq 转换为 sbt.Project.Setting[_] 的 k, v
【发布时间】:2012-05-29 09:37:40
【问题描述】:

Play 2.0 的 Build.sbt 使用拉皮条的项目定义来发挥它的魔力;您可能需要添加的任何其他设置必须以k := v 方式手动输入。适用于一般情况,但不适用于特定情况;也就是说,当需要设置一个 sbt-plugin 的设置时,它总是Seq[Settings[_]]。这是一个可预测的工作示例

lazy val main = PlayProject(appName, appVersion, ....).settings(
  version := appVersion
)

现在,如何将 Seq[Settings[_]] 转换为 k,v 对,以便 Play by-name 调用:

def apply(...., ...., settings: => Seq[Setting[_]])

真的有效吗?!!

我已经询问了游戏用户,但祝你好运,那里有一个动物园,框架正在起飞,核心开发人员显然已经在他们的耳朵里......

【问题讨论】:

    标签: scala build playframework sbt seq


    【解决方案1】:

    这行得通吗?

    ….settings(mySeqOfSettings: _*)
    

    【讨论】:

    • @Debiliski 谢谢,早些时候尝试过,编译器抱怨说,“这样的注释只允许在 *-parameters 的参数中”。严重的,皱眉的疼痛,让我发疯;-)
    • @Debs 实际上你在单数情况下是对的;但是,我有几个 Seq[Settings[_]] 可以传入;这就是我被灌输的地方。也许一些 flatMap 或 reduce 魔法是为了
    • (seq1 ++ seq2): _* – 或者你想消除重复键?
    • 这也适用:“seqSettings.flatMap{x=>x}: _*”,我将 seqSettings 设为 Seq of Seq。我喜欢你的 ++ 但是,你得到了点头 ;-)
    • 也可以用flatMap{x=>x} 代替flatten
    【解决方案2】:

    我在播放框架和 sbt-buildinfo 插件上遇到了同样的问题。经过大量的反复试验,我最终更喜欢连续两次应用这些设置。我觉得 Build.scala 中发生的事情看起来更明显:http://mfizz.com/blog/2013/04/auto-generate-class-file-build-info-play-framework

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2018-11-29
      • 2021-08-31
      • 2011-12-02
      相关资源
      最近更新 更多