당신은 자신이
val nameIterator = Iterator.continually((names, names.nextElement)).takeWhile(_._1.hasMoreElements).map(_._2)
Iterator.continually
처럼 만들 수는 각 단계에서 원래 열거하고 다음 요소를 반환 (names, names.nextElement)
에 에 의해 이름 호출을 수행합니다. 정지 조건은 당연히 takeWhile
이며 열거 형을 영원히 통과 할 필요가 없으므로 map
값만 있습니다.
또는, 래퍼 구축 할 수 :
val nameIterator = new Iterator[SomeType] { def hasNext = names.hasMoreElements; def next = names.nextElement }
을 또는 마지막이이 경우에 사용할 수있는 한 아마도 내장 된 방법입니다 :
val nameIterator = new scala.collection.JavaConversions.JEnumerationWrapper(names)
Implicits 사용 :
하나 더 있습니다. 당신이
import scala.collection.JavaConversions._
을 가져 오는 경우 당신은 암시 적으로 그것을 할 수 있습니다 (당신은 다른 자바 collecitons에 대한 암시 적 변환을거야)
request.getParameterNames.map(println)
하고 그냥 작동합니다. (2.8.1 이후)
첫 번째 코드에는 버그가 포함되어 있다고 생각합니다. 마지막 요소를 반환하지 않습니다. 그것을 얻으려면'val nameIterator = Iterator.continually ((names.hasMoreElements, names))와 같은 것을해야합니다. takeWhile (_._ 1) .map (_._ 2.nextElement)' – SergGr
'JavaConversions'는 더 이상 사용되지 않습니다. Kevin Wright의 대답을 참조하십시오. – Kelvin