2016-06-08 19 views
0

我是Scala的全新用戶,並且正試圖弄清楚如何遍歷一個Buckets陣列(從Amazon AWS),並從每個存儲區獲取數據並將其存儲在一個新的陣列。使用ForEach循環存儲個人數據Scala

在Java中,這將僅僅是

ArrayList<String> names = new ArrayList<String>(); 

for(Bucket bucket : bucket) { 
    names.add(bucket.getName(); 
} 

但是,我怎麼做到這一點的Scala呢?我知道我定義了某種功能,它會像

buckets.foreach(bucket => FILL IN SOME WAY OF FILLING UP ARRAY) 

但是,這就是我得到的。

任何和所有的幫助將不勝感激。謝謝,

回答

1

這是相當於斯卡拉,如果buckets是一個scala集合。

val names = buckets map (_.getName) 

如果這不是你需要說

import scala.collection.JavaConverters._ 
buckets.asScala.map(_.getName) 

更多結構性的辦法,那就是在斯卡拉灰心,你不應該這樣做,但completenes的緣故,所以你可以看到你會必須做的就是你的解決方案的工作,你可以使用foreach像這樣

var names = Vector.empty[String] 
buckets foreach (bucket => names :+= bucket.getName) 

或foreach循環,這可能是比較熟悉

var names = Vector.empty[String] 
for (bucket <- buckets) { 
    names :+= bucket.getName 
} 

但是你仍然可以使用的理解和實現功能的方式

val names = for (bucket <- buckets) yield bucket.getName 
有效的結果