scala分配字符串和值数组

时间:2014-11-19 14:55:42

标签: string scala

我正在尝试分配一个字符串,后跟一系列分数。

我定义了一些类别

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
我在这里错过了什么吗?

3 个答案:

答案 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"的新条目;使用相同密钥的后续调用将更新该值。