SBT assembly-plugin的PathList中的“xs @ _ *”是什么意思?

时间:2017-03-14 13:18:26

标签: scala sbt sbt-assembly

这些短语意味着什么:

  

xs @ _ *

     

ps @ _ *

documentation复制:

assemblyMergeStrategy in assembly := {
  case PathList("javax", "servlet", xs @ _*)         => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
  case "application.conf"                            => MergeStrategy.concat
  case "unwanted.txt"                                => MergeStrategy.discard
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}

2 个答案:

答案 0 :(得分:3)

'@'运算符用于绑定模式匹配中的变量。

<somevar> : _*用于将varargs解压缩为适当类型的序列。

在此示例中,ps @ _*告诉模式匹配从PathList检索varargs作为路径序列。

答案 1 :(得分:3)

在您的示例中,_*表示所有内容,@表示匹配

xs @ _*是案例模式意味着选择匹配第一个案例/javax/servlet/*

的所有内容

ps @ _*表示将所有匹配的内容选为/ *和html扩展名