Как говорит pst, результат - это то, что вы ожидаете от реального массива Java. Одно из изменений между 2.7 и 2.8 состоит в том, что Array[T]
теперь точно настоящий массив Java. Новый дизайн коллекций означает, что выполнение операций коллекции Scala над массивом Java (например, map
в вашем примере) вернет массив Java в качестве результата. Это означает, что следующее
for {person <- people} yield person.toXml
Раньше не возвращал массив Java, но теперь возвращает. Вы можете решить проблему, изменив тип аргумента people
вашего метода peopleToXml
следующим образом:
def peopleToXml(people: Seq[Person]): xml.Elem = {
<people>{ for {person <- people} yield person.toXml }</people>
}
Это будет означать, что когда вы вызываете этот метод с аргументом Array
, массив будет неявно преобразован в WrappedArray
, который ведет себя так, как вы ожидаете. Это также даст вам возможность вызывать этот метод для коллекций без массивов.