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

Ale*_* Ya 7 scala sbt sbt-assembly

这些短语是什么意思:

xs @ _*

ps @ _*

文件复制:

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)
}
Run Code Online (Sandbox Code Playgroud)

Fai*_*igB 8

在你的例子中_*意味着一切,@为了匹配

xs @ _* 是案例模式意味着选择与第一个案例匹配的所有东西 /javax/servlet/*

ps @ _* 意味着选择所有匹配为 /* 并带有html扩展名的


Jak*_*zuk 4

“@”运算符用于在模式匹配中绑定到变量。

<somevar> : _*用于将可变参数解包为适当类型的序列。

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