У меня есть список, содержащий смесь строк и карт, listOfIds
. Код ниже пытается получить этот список. Сопоставляется с совпадающими, а строки — с несовпадающими.
val (matched, unmatched) =
listOfIds.foldLeft(List.empty[Map[String, String]], List.empty[String]) {
case ((matched, unmatched), p) => p match {
case m:Map[String, String] => (m :: matched, unmatched)
case s:String => (matched, s :: unmatched)
}
}
Проблема в том, что я сталкиваюсь со стиранием типа. Я обнаружил, что могу использовать заполнители для типов, чтобы обойти это m:Map[_, _]
, но позже это вызывает проблемы при попытке извлечь значения карты.
Я не знаком с тегами типов, но быстрое исследование показывает, что это может быть решением... Буду признателен за любые советы, как я могу обойти стирание типа в этом случае.
Спасибо!
type erasure
здесь: stackoverflow.com/questions/1094173/ .foldLeft
может быть не оптимальным методом здесь. Вы смотрели наpartition
вSeq
-Черте, похоже, это хорошо подходит? - person Andreas Neumann   schedule 29.12.2015listOfIds
? - person Kevin Meredith   schedule 29.12.2015List[Object]
- person kidshenlong   schedule 29.12.2015