2013-08-02 46 views
1

有人可以將它轉化爲對我有意義的東西嗎? (在這個過程中學習Scala與Java/C /組件的背景):地圖方法/函數的斯卡拉代碼部分的翻譯

broadcast(wireFormat.render(msg),selectedResources.map(_.resource).toSet.asJava).map(_ => msg) 

我明白/得到大部分,但也有兩個部分是仍然有點模糊: 1)我假設地圖(。資源)正在對「任何」字段[資源]進行操作 - 通過它的東西 - 是否正確? 2)在聲明的最後部分,操作「 => msg」是做什麼的?

TIA。

編輯:出於某種原因下劃線字符不被呈現在問題#2,所以它應爲:

_ => msg 

回答

1

爲了解碼:selectedResources.map(_.resource)等於selectedResources.map(x => x.resource)(1)。 _被稱爲佔位符。 (1).toSet可能會返回一個Scala集,然後轉換爲java.util.Set使用asJava

.map(_ => msg)只不過是.map(x => msg)。基本上你沒有使用任何元素。例如:

val msg = "hey" 
scala> List(1,2,3).map(_ => hey) 
res0: List[String] = List(hey,hey,hey) 
+0

您可以擴展最後一部分給我嗎?我認爲*正在發生的事情是,佔位符被用作主要調用本身(即廣播)和名爲「msg」的函數所得結果的插入點 - 是否是正確的評估? – mjk

+0

明白了。非常感謝你。 – mjk