我正在尝试分配一个字符串,后跟一系列分数。
我定义了一些类别
case class CategoryScore( //Define Category Score class
val food: Int,
val tech: Int,
val service: Int,
val fashion: Int)
并将它们映射到某些键,以便产品名称之类的字符串后面跟着案例类别的分数。
var keywordscores:Map[String, CategoryScore] = Map() //keyword scores
keywordscores += ("amazon",CategoryScore(1,9,1,4)) //Tried to add score for a string, does not work
我在这里错过了什么吗?
答案 0 :(得分:1)
scala> keywordscores += ("amazon" -> CategoryScore(1,9,1,4))
或(注意额外的括号)
scala> keywordscores += (("amazon", CategoryScore(1,9,1,4)))
原因是+
被定义为+(kvs: (A, B)*): Map[A, B]
,这意味着它可以使用任意数量的(key,value)
对,导致+= (k,v)
不明确。
a -> b
符号消除了这种歧义(并且阅读起来更好)。
答案 1 :(得分:0)
添加地图
keywordscores += ("amazon" -> CategoryScore(1,9,1,4))
答案 2 :(得分:0)
使用可变Map
,您还可以按如下方式更新/插入条目,
val keywordscores:collection.mutable.Map[String, CategoryScore] = Map()
keywordscores("amazon") = CategoryScore(1,9,1,4))
此处插入了一个带有键"amazon"
的新条目;使用相同密钥的后续调用将更新该值。