2014-07-18 6 views
1

왜 이런 일이 일어나는지 이해하는 데 어려움을 겪고 있습니다. 6 개의 정수가 포함 된 컬렉션 (불변의 SortedSet)이 있고 나는 .map 메서드를 통해 반복하여 생성 된 HTML을 생성한다. 페이지를 새로 고침 할 때마다 HTML 페이지의 요소가 항상 다른 순서로 표시됩니다. 참조 로거 - -생성 된 HTML에 표시된 요소의 순서가 컬렉션의 요소 순서와 일치하지 않습니다.

여기에 나는 또한 화면에 출력을 로그하려고

@deltas = @{ scala.collection.SortedSet[Int](-15, -10, -5, 5, 10, 15) } 

    @*** More code here ***@ 

@Logger.debug("DELTAS="+deltas.toString()) 
@deltas.map { delta => 
<li> 
    @Logger.debug("DELTA="+delta.toString()) 
    <a href="#">@{dist.toDouble.intValue + delta}&nbsp;km (@delta)</a> 
</li> 
} 

내 템플릿에서 일부 발췌의 예상대로 요소는 항상 올바른 순서로 표시됩니다.

[debug] application - DELTAS=TreeSet(-15, -10, -5, 5, 10, 15) 
[debug] application - DELTA=-15 
[debug] application - DELTA=-10 
[debug] application - DELTA=-5 
[debug] application - DELTA=5 
[debug] application - DELTA=10 
[debug] application - DELTA=15 

지금은 단지 문제는 템플릿 엔진에 있어야 말할 수있는,하지만 난 그게 버그 (가능성) 여부를 알고 싶습니다 아니면 그냥 몇 가지 까다로운 측면에 대한 자세한 것을 알 필요가 (가능성이 매우 높다).

답변

2

분명히 템플릿 엔진과 관련이있는 것 같습니다. 나는 이유를 알아 내기 위해 더 많이 파 내려야한다. 이 순간 나는 collection의 iterator를 사용하여이 문제에 대한 해결책을 제안 할 수있다.

@for(delta <- deltas.iterator) { 
<li> 
    <a href="#">@{dist.toDouble.intValue + delta}&nbsp;km (@delta)</a> 
</li> 
} 

또한 TreeSet을 Seq로 변환하여 문제를 해결할 수도 있습니다. 갱신 전에

이전

첫 번째 단서 :이 질문을 읽을 수

, 나는 당신이 지적 게시물을 읽은

SortedSet map does not always preserve element ordering in result?

+0

SortedSet의 매핑에 대한 자세한 내용은 하지만 내 코드에서 얻은 것과 아무런 관련이 없습니다. 내가 게시 한 코드와 Logger 출력을 면밀히 살펴보면 동일한 반복이 제공하는 것에 동의하게 될 것입니다. Play가 실행중인 터미널 (Logger)의 올바른 결과이지만 생성 된 HTML 페이지에서 페이지를로드 할 때마다 무작위 순서가 있습니다 (이것은 제안과는 아무런 관련이 없음). – Max

+0

iterator 메서드는 문제를 해결했습니다! 나는 제안하기 전에 다른 반복 기술을 시도했지만 운이 없었습니다 ... – Max