2017-10-10 10 views
0

자바 반복 가능 객체를 반환하는 Scala에서 데이터베이스를 쿼리하고 있습니다. spilterator 객체를 생성하기 위해 spilterator 메소드를 호출하지만, tryAdvance 또는 forEachRemaining을 스칼라 구문으로 사용하지는 않습니다.스칼라에서 Java spliterator 사용

자바 구문 상당 이하이며 작동합니다

여기
Spliterator<String> splitStr = nameList.spliterator(); 
while(splitStr.tryAdvance((n) -> System.out.println("name - " + n))); 

내가 스칼라에있는 것입니다 : 당신이 볼 수 있듯이

val nameListSplit = nameList.spliterator() 
while (splitStr.tryAdvance((n) -> println("name - " + n)) 

내가 사용하는 방법에 전화를 아무 생각이없는 스칼라에서 tryAdvance() 메소드를 사용하면 forEachRemaining 메소드에서도 마찬가지입니다.

+0

왜 당신은 그냥하지 않는다'N nameList.forEach이 (->에서 System.out.println ("이름 -" + n)); – shmosel

답변

0

직접 번역 :

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