簡體   English   中英

在Scala中使用Java分離器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM