Вопрос

Хорошо, этот вопрос кажется очень глупым, но я хочу сказать, что если вы посмотрите на Scala 2.7.6 API, то он сделает метод mappingToString устаревшим. Поэтому должна быть более элегантная альтернатива для печати карты в индивидуальном формате. Поскольку практически для любой цели наличие метода эквивалентности mkString в Map очень удобно.

Что вы, ребята, думаете об этом? Какой у вас фрагмент кода для печати карты, кроме println?

Это было полезно?

Решение

Метод mappingToString использовался для изменения способа перевода каждой пары ключ / значение в строку, которая затем использовалась методом toString .

Я думаю, что это паршиво. С одной стороны, это добавляет изменчивость в неизменную структуру данных. Если у вас есть особые требования к печати, вам, вероятно, лучше поместить их в другой класс.

Другие советы

mappingToString относится к Map .

С новой платформой коллекций в Scala2.8 Map может быть повторен любым IterableLike , который расширяет TraversableLike .

Метод mkstring (уже есть в 2.7 для Iterable ) затем следует использовать.

Просмотрите этот пост в блоге " Строки " Джесси , для 2.7 mkstring () примеров:

/*
   Making use of raw strings to create a multi line string
   I add a | at the beginning of each line so that we can line up the quote nicely 
   in source code then later strip it from the string using stripMargin
*/
scala> val quote = """|I  don-t consider myself a pessimist.                                                                                                 
     |                |I think of a pessimist as someone who is waiting for it to rain.
     |                |And I feel soaked to the skin.
     | 
     |                |Leonard Cohen"""
quote: java.lang.String = 
|I don-t consider myself a pessimist. 
                      |I think of a pessimist as someone who is waiting for it to rain.
                      |And I feel soaked to the skin.

                      |Leonard Cohen

// capilize the first character of each line
scala> val capitalized = quote.lines.
     |                         map( _.trim.capitalize).mkString("\n")
capitalized: String = 
|I don-t consider myself a pessimist.
|I think of a pessimist as someone who is waiting for it to rain.
|And I feel soaked to the skin.

|Leonard Cohen

// remove the margin of each line
scala> quote.stripMargin        
res1: String = 
I don-t consider myself a pessimist. 
I think of a pessimist as someone who is waiting for it to rain.
And I feel soaked to the skin.

Leonard Cohen

// this is silly.  I reverse the order of each word but keep the words in order
scala> quote.stripMargin.         
     |       lines.               
     |       map( _.split(" ").   
     |              map(_.reverse).
     |              mkString (" ")).
     |      mkString("\n")
res16: String = 
I t-nod redisnoc flesym a .tsimissep
I kniht fo a tsimissep sa enoemos ohw si gnitiaw rof ti ot .niar
dnA I leef dekaos ot eht .niks

dranoeL nehoC

Вы также можете комбинировать Iterator.map () с mkString () , например, для создания строки запроса из карты [String, String] :

val queryString = updatedMap.map(pair => pair._1+"="+pair._2).mkString("?","&","")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top