2015-12-08 123 views
-1

我剛開始玩scala時遇到以下問題。我想簡單地返回一個帶有Int鍵的Map和一個值爲元組的列表。這就是我的方法:如何在scala中返回地圖

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])而不是地圖?如果是這樣,我怎樣才能讓它返回地圖?

//編輯

我試圖寫一個機器人的JavaScript遊戲。我正在繪製一塊瓷磚。在上面提到的方法中,我試圖找到所有「打開的瓷磚」(沒有完全被其他瓷磚包圍的瓷磚,因此可以移動),並且在返回時我想要有一個Map,其中鍵是具有座標的瓷磚編號值。在下一步中,我想查找是否有可能找到具有相同編號的「打開」瓷磚之間的路徑。

+0

我對你的鑰匙在這裏代表什麼有點困惑 - 你可以爲我們擴大一點嗎?也許這會更容易回答你的問題 – Hamish

+1

@Hamish我編輯了我的問題 – pezetem

+0

@NathanHughes,所以我相信收益率會給我一些Seq,對不對?在這種情況下,也許我會簡單地將結果分組並得到我的地圖? – pezetem

回答

1

我認爲這個問題是行

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

你應該試試這個:

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

你的版型Map[Int, List[(Int, Int)]]分配給值openTilesMap

+0

哇,我沒有想到它會那麼簡單,非常感謝你:) – pezetem