2016-11-10 10 views
-2

検索機能を作成しようとしているため、ユーザーはキー値を使用してリストを検索できますが、使用しようとしているメソッドは型の不一致を返します。必須。 「Any」ではなくIntを取るようにポイントを設定するにはどうすればよいですか?スカラ型不一致マッピング

それはあなたが、List[Int]Int 1つだけではないのタプルを返すようにしたいように見える

SK1, 9, 7, 2, 0, 7, 3, 7, 9, 1, 2, 8, 1, 9, 6, 5, 3, 2, 2, 7, 2, 8, 5, 4, 5, 1, 6, 5, 2, 4, 1 
SK2, 0, 7, 6, 3, 3, 3, 1, 6, 9, 2, 9, 7, 8, 7, 3, 6, 3, 5, 5, 2, 9, 7, 3, 4, 6, 3, 4, 3, 4, 1 
SK4, 2, 9, 5, 7, 0, 8, 6, 6, 7, 9, 0, 1, 3, 1, 6, 0, 0, 1, 3, 8, 5, 4, 0, 9, 7, 1, 4, 5, 2, 8 
SK5, 2, 6, 8, 0, 3, 5, 5, 2, 5, 9, 4, 5, 3, 5, 7, 8, 8, 2, 5, 9, 3, 8, 6, 7, 8, 7, 4, 1, 2, 3 
SK6, 2, 7, 5, 9, 1, 9, 8, 4, 1, 7, 3, 7, 0, 8, 4, 5, 9, 2, 4, 4, 8, 7, 9, 2, 2, 7, 9, 1, 6, 9 
SK7, 6, 9, 5, 0, 0, 0, 0, 5, 8, 3, 8, 7, 1, 9, 6, 1, 5, 3, 4, 7, 9, 5, 5, 9, 1, 4, 4, 0, 2, 0 
SK8, 2, 8, 8, 3, 1, 1, 0, 8, 5, 9, 0, 3, 1, 6, 8, 7, 9, 6, 7, 7, 0, 9, 5, 2, 5, 0, 2, 1, 8, 6 
SK9, 7, 1, 8, 8, 4, 4, 2, 2, 7, 4, 0, 6, 9, 5, 5, 4, 9, 1, 8, 6, 3, 4, 8, 2, 7, 9, 7, 2, 6, 6 
+0

'mapData'の種類は何ですか? 'mnuShowPointsForTeam'の戻り値は何ですか(今はprintlnsだけです)? – Thilo

+0

が質問を更新しました。mapdataは外部のtxtファイルです。はい、それはチームにprintsするキー値です@Thilo –

+0

'mapData'のタイプは何ですか?それは 'Map [String、Any]'ですか? 'Map [String、Int]'を作ることができないなら、その 'case Some(p)'部分の中でIntに変換/キャストする必要があります。 – Thilo

答えて

3

val mapdata = readFile("data.txt") 


    def handleTwo(): Boolean = { 
    mnuShowPointsForTeam(currentPointsForTeam) 
    true 
    } 




def mnuShowPointsForTeam(f: (String) => (String, Int)) = { 
    print("Team>") 
    val data = f(readLine) 
    println(s"${data._1}: ${data._2}") 
    } 



    def currentPointsForTeam(team: String): (String, Int) = { 
    val points = mapdata.get(team) match{ 
     case Some(p) => p 
     case None => 0 
    } 
    (team, points) 
    } 

data.txtをを「どれがint型に適合していないタイプ」 。あなたは、単一のIntを返したいならば

ので

def currentPointsForTeam(team: String): (String, List[Int]) = 
    (team, mapdata.get(team).getOrElse(List.empty)) 
    // Or maybe List(0) instead of List.empty 

、あなたは1つの値をマップにList[Int]から行く方法を言っている場合。たぶん、合計?

def currentPointsForTeam(team: String): (String, Int) = 
    (team, mapdata.get(team).map(_.sum).getOrElse(0)) 
+0

釘の頭、それはまさに私が達成しようとしていたものです! thanks –

+0

最初の例はうまくいきましたが、2番目の例はString IntではなくString List intを取ります。ちょうどそれをテストし、私はタイプの不一致を取得@ Thilo –

+0

私は思う前に入力した最後のコメントを無視する!それは今働いて、もう一度ありがとう –