Scala: mutable.Map [Any, mutable.Map [Any, IndexedSeq [Any]] проблема - PullRequest
0 голосов
/ 20 марта 2019

У меня небольшая проблема при попытке поместить элемент на мою вторую изменяемую карту. Моя цель: собрать некоторые элементы, расположенные во многих различных XML-файлах, и упорядочить их в иерархии, которой они принадлежат (файлы представляют собой неструктурированный беспорядок с категориями, приведенными, по-видимому, без логического порядка). Это следующие элементы: уровень в иерархии категории (1 - x, 1 - верхний уровень) как iLevel, код категории как catCode, его имя и, если необходимо, имя его родителя (все имена расположены в namesCategories). .

val categoryMap = mutable.Map.empty[Int, mutable.Map[String, IndexedSeq[String]]]

...
//Before: search in a first file links to other files
// for each category file found, will treat it and store it for further treatement.
matches.foreach{f =>
        ....
       //Will search for a specific regex, and for each matches store what we are interested in
      matchesCat.foreach{t =>
        sCat = t.replaceFirst((system_env + """\S{4}"""), "")
        //iLevel given by the number of '/' remaining in the string
        iLevel = sCat.count(_ == '/')
        //reset catCode and namesCategories
        catCode = ""
        namesCategories.clear()
   //Search and extract the datas from sCat using premade regex patterns
        sCat match {
          case patternCatCode(codeCat) => catCode = s"$codeCat"
        }
        //remove the category code to prepare to extract names
        sCat.replace(patternCatCode.toString(), "")
        //extract names
        do {
          sCat match {
            case patternCatNames(name) => namesCategories += s"$name"
          }
          sCat.replace(patternCatNames.toString(), "")
        }while(sCat!="")

        // create the level entry if it doesn't exist
        if(!(categoryMap.contains(iLevel))) {
            categoryMap.put(iLevel, mutable.Map.empty[String, IndexedSeq[String]])
        }

        //Try to add my cat code and the names, which must be in order for further treatment, to my map
        categoryMap(iLevel).put(catCode, namesCategories.clone())


      }
    }
  }

Проблема: Несоответствие типов, ожидаемое: IndexedSeq [String], фактическое: mutable.Builder [String, IndexedSeq [String]]

Как любезно заметил Трэвис Браун, у меня есть проблема с несоответствием типов, но я не знаю, как это исправить и заставить общую идею работать.

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

Какие-нибудь советы?

Спасибо за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...