如何在scala

时间:2015-12-08 19:05:27

标签: scala

我刚开始玩scala,我遇到了以下问题。我想简单地返回一个以Int作为键的Map和值的元组列表。这是我的方法:

  def findOpenTiles(board: Array[Array[Int]]): Map[Int, List[(Int, Int)]]={

    val openTilesMap = Map[Int, List[(Int, Int)]]
    for (x <- 0 until Constant.boardWidth; y <- 0 until Constant.boardHeight) yield {
      if (hasOpenTile(board, x, y)){
        // add to values to openTilesMap 
      }
    }
    openTilesMap
  }

但是我的IDE显示错误:

Expression of type (Seq[(Int, List[Int, Int])]) => Map[Int, List[(Int, Int)]] doesn't conform to expected type Map[Int, List[(Int, Int)]]

这是否意味着val openTilesMap = Map[Int, List[(Int, Int)]]创建Seq of Tuples (Int, List[Int, Int])而非地图?如果是这样,我怎么能让它返回Map?

//编辑

我试图将机器人写入javascript游戏。我正在绘制一块瓷砖。在上面提到的方法中,我试图找到所有&#34;打开的瓷砖&#34; (没有被其他图块完全包围的图块,因此可以被移动)并且在返回中我想要一个图,其中键是具有坐标作为值的图块编号。在下一步中,我想找到是否有可能找到&#34; open&#34;之间的路径。相同数量的瓷砖。

1 个答案:

答案 0 :(得分:1)

我认为问题就在于行

val openTilesMap = Map[Int, List[(Int, Int)]]

你应该试试这个:

val openTilesMap: Map[Int, List[(Int, Int)]] = Map()

您的版本将类型Map[Int, List[(Int, Int)]]分配给值openTilesMap