Scala:使用数组作为Map的“值”部分

Fre*_*red 3 arrays scala

下面的代码的第一部分将元组成功存储在Map的value部分中。第二部分是我尝试存储数组而不是元组的尝试。这是行不通的。怎么了?

    object MyClass {

    def main(args: Array[String]) {
        val m1 = Map("fname" -> (1,2), "lname" -> (3,4))
        for ((k,v) <- m1) printf("key: %s, value: %s, 0: %s\n", k, v, v._1)

        var states = scala.collection.mutable.Map[String, new Array[Int](3)]()
        val states += ("fname" -> (1,2,3))
        val states += ("lname" -> (4,5,6))
        for ((k,v) <- states) printf("key: %s, value: %s, 0: %s\n", k, v, v._1)         
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误。

这是我得到的错误

一旦理解了完成这项工作的语法,我也想访问数组中的各个元素。

jwv*_*wvh 6

Array[Int]是一种。new Array[Int](3)是一个值。声明a时,Map您需要类型,而不是值:Map[String,Array[Int]]

(1,2,3) 是一个元组(或3元组),但您需要一个数组: Array(1,2,3)

v._1是元组的第一个元素,但您想要数组的第一个元素:v(0)v.head

这样编译。

var states = scala.collection.mutable.Map[String,Array[Int]]()
states += ("fname" -> Array(1,2,3))
states += ("lname" -> Array(4,5,6))
for ((k,v) <- states) printf("key: %s, value: %s, 0: %s\n", k, v, v(0))
Run Code Online (Sandbox Code Playgroud)