[英]Understanding Spliterator, Collector and Stream in Java 8
[英]Using Java spliterator with Scala
我在Scala中查詢一個返回Java可迭代對象的數據庫。 我調用spilterator方法來創建一個spilterator對象,但是我不知道在Scala語法中使用tryAdvance或forEachRemaining。
Java語法等效項如下,並且可以正常工作:
Spliterator<String> splitStr = nameList.spliterator();
while(splitStr.tryAdvance((n) -> System.out.println("name - " + n)));
這是我在Scala中擁有的東西:
val nameListSplit = nameList.spliterator()
while (splitStr.tryAdvance((n) -> println("name - " + n))
如您所見,我不知道如何在scala中使用tryAdvance()方法進行調用,forEachRemaining方法也是如此。
直接翻譯:
while(res4.tryAdvance { n => System.out.println("name - "+ n) }) ()
// ^ = not - ^^ unit (or {}); not ;
// ^ Braces instead of parens are purely style
慣用翻譯:
nameList.forEach { n => println(s"name - $n") }
// ^ foreach not iterator ^ interpolator not string +
// ^ println not System.out.println
// ^ forEach in Java, foreach in Scala (pretty sure Scala had them first)
for(n <- nameList.asScala) println(s"name - $n")
// ^ for-comprehension (sugar for chained foreach, map, flatMap, filter, withFilter depending on context (generalized monad-comprehensions))
// ^ <- as in "take n from nameList.asScala"
// ^ convert to a Scala collection (import collection.JavaConverters._) (needed for foreach not forEach; someone should add AnyVal wrappers for that)
// ^ add yield here to do a (flat)map instead of foreach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.