2017-03-14 71 views
2

什麼這些詞組的意思是:SBT程序集插件PathList中的「xs @ _ *」是什麼意思?

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) 
} 

回答

3

'@' 操作符是用來綁定到模式匹配中的變量。

<somevar> : _*用於將可變參數解壓縮爲適當類型的序列。

在此示例中,ps @ _*指示模式匹配以從PathList中檢索作爲路徑序列的可變參數。

+0

它是Scala正則表達式語法嗎? –

1

在您的例子_*意味着一切,@匹配

xs @ _*區分模式是指選擇一個適合第一種情況相匹配的每一件事/javax/servlet/*

ps @ _*意味着拿起所有比賽爲/ *,並與html擴展