Я пытаюсь создать неизменную карту хеша [String, (String, Int)], используя следующий код:
def genList(xx: String) = {
Seq("one", "two", "three", "four")
}
val oriwords = Set("hello", "how", "are", "you")
val newMap = (Map[String, (String, Int)]() /: oriwords) (
(cmap, currentWord) => {
val xv = 2
genList(currentWord).map(ps => {
val src = cmap get ps
if(src == None) {
cmap + (ps -> ((currentWord, xv)))
}
else {
if(src.get._2 < xv) {
cmap + (ps -> ((currentWord, xv)))
}
else cmap
}
})
}
)
С этим кодом я получаю следующее исключение:
error: type mismatch;
found : Seq[scala.collection.immutable.Map[String,(String, Int)]]
required: scala.collection.immutable.Map[String,(String, Int)]
genList(currentWord).map(ps => {
^
Я знаю, что он возвращает list
из Map[String, (String, Int)]
в отличие от обновления для Map[String, (String, Int)]
для операции сгиба.К сожалению, я получаю какие-либо указания, как это исправить.Я очень новичок в Scala.
Ожидаемый результат:
scala.collection.immutable.Map[String,(String, Int)] = Map(one -> (are,2), two -> (are,2), three -> (are,2), four -> (are,2))