【问题标题】:Using an array as the 'value' part of a Map使用数组作为 Map 的“值”部分
【发布时间】:2019-04-26 20:33:09
【问题描述】:

下面代码的第一部分成功地在 Map 的值部分中存储了一个元组。第二部分是我尝试存储数组而不是元组。这没用。怎么了?

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)         
  }
}

这是我得到的错误。

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

【问题讨论】:

  • 请不要包含文字图片。它们很难阅读,视力障碍者也无法阅读。它们也不能被索引或搜索。而是将文本直接复制并粘贴到帖子中。

标签: arrays scala tuples


【解决方案1】:

Array[Int] 是一种类型。 new Array[Int](3) 是一个值。声明 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))

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多