当我在初始化时设置不可变的hashmap内容,如下所示:
var result_tags=HashMap[String,Int]()
result_tags=("video"->0,"game"->0,"news"->0,"ee"->0,"sport"->0,
"shop"->0,"ju"->0,"story"->0,"pho"->0,"con"->0,"live"->0,"life"->0,"soft"->0,"hire"->0,"car"->0,
"mm"->0,"mus"->0,"mob"->0,"male"->0,"heal"->0, "sca"->0,"bank"->0,"mail"->0,"cool"->0,"pict"->0, "dl"->0)
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
too many elements for tuple:26,allowed:22
Run Code Online (Sandbox Code Playgroud)
这意味着元组的最大数量是22.我知道->是用于创建元组.是否有其他方法来初始化hashmap而没有其元素的限制数量.
你实际上在做什么是初始化一个巨型Tuple类型并尝试将它分配给类型的result_tags变量,HashMap即使元组大小不超过最大大小也不会起作用.
因此,关于元组的错误并不是指->您使用的语法,而是指(...)列表中的元素数.即使你这样写,你也会得到同样的错误:
(("video", 0), ("game", 0), ..., ("dl", 0))
Run Code Online (Sandbox Code Playgroud)
其次,在你的情况下,你应该做:
var result_tags = HashMap("video" -> 0, "game" -> 0, ..., "dl" -> 0)
Run Code Online (Sandbox Code Playgroud)
(请注意,我省略了类型信息,因为Scala会为您推断出类型.)
(a1, a2, ..., aN)Scala中的语法完全不同,因为它初始化了一个元组类型.每一个这样的声明转换成TupleN类型,其中的最大大小为22,所以Scala库实际上具有22不同Tuple,从类Tuple1到Tuple22.
第三,你的风格可以使用一些修正
scala.collection.Mapval代替varresultTags| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |