Как создать упорядоченные элементы XML в Scala? - PullRequest
2 голосов
/ 28 января 2012

Мне кажется, это неправильно - почему порядок элементов изменился по сравнению с порядком их построения?

scala> var list = collection.immutable.TreeSet(1, 3, 2, 5, 0)
list: scala.collection.immutable.TreeSet[Int] = TreeSet(0, 1, 2, 3, 5)

scala> var xml = <list>{ list.map(number => { <number>{number}</number> }) }</list>
xml: scala.xml.Elem = <list><number>3</number><number>1</number><number>2</number><number>5</number><number>0</number></list>

scala> var xml = <list>{ list.map(number => { println(number); <number>{number}</number> }) }</list>
0
1
2
3
5
xml: scala.xml.Elem = <list><number>3</number><number>1</number><number>2</number><number>5</number><number>0</number></list>

1 Ответ

2 голосов
/ 28 января 2012

Когда вы наносите на карту TreeSet, он создает новый набор.Новый набор, конечно, не использует естественный порядок целых чисел, поскольку его элементы не являются целыми числами.Фактически, поскольку нет естественного Порядка для Elem, новый набор неупорядочен.Вы можете добиться того заказа, который ищете:

var xml = <list>{ list.toSeq map (n => <number>{n}</number>) }</list>
...