2017-11-16 11 views
0

私は、このエラーが生じています:このコード行のためのエラー違法開始

error: illegal start of simple expression def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield (val a = line.split(",")) (a[0],a[4].toDouble)

def process_alcs(lines: List[String]) : List[(String, Double)] = 
    for (line <- lines) yield (val a = line.split(",")) (a[0],a[4].toDouble) 

私が最初にそれがParentheseの不一致だと思ったが、私は100回

を確認

答えて

1

試行

def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield { 
    val a = line.split(",") 
    (a(0),a(4).toDouble) 
} 

基本的には、あなたの歩留まりで複数行の評価を実行しています。そのため、(の代わりに{を使用してコードをカプセル化する必要があります。また、両方のステートメントは、1つの{}ペアでカプセル化する必要があります。

さらに、スカラーの配列メンバーには、()ではなく[]を使用してアクセスします。したがって、[0]の代わりに(0)を使用したい

別のメモで、これは誰かが今日尋ねた別の質問に関連しているように思われます。その場合、4番目の列の値。 4列目にアクセスするには、(3)を使用します。その場合

コードがなり、

def process_alcs(lines: List[String]) : List[(String, Double)] = for (line <- lines) yield { 
    val a = line.split(",") 
    (a(0), a(3).toDouble) 
} 

は、この情報がお役に立てば幸いです。ご不明な点がありましたら、私に教えてください:)

編集:私はあなたのコード

+0

に基づいて、私のような微調整理由については、説明のためのコメントを参照してください

def process_as_map(lines: List[String]) : Map[String, Double] = { val results: List[(String, Double)] = for (line <- lines) yield { val a = line.split(",") (a(0), a(3).toDouble) } results.toMap } 

、しようと、マップに変換するにはそれがうまくいったと思う、ありがとう、私は別の問題がある。 def process_pops(lines:List [String]):Map [String、Long] = for(行< - 行)yield { }この関数は、次の関数を使用してマップ内で値を変換しようとしています。 val b = line.split( "、") (b(0) - > b(1).toLong).toMap }これは動作しません。私は今週スカラを始めました。あなたの時間に感謝しました。 –

+0

.toMapを外に動かすと、 'def process_pops(lines:List [String]):Map [String、Double] = { val results:List [ 、ダブル)] =ため(行が< - ライン)の収率{ ヴァルA = line.split( "") ((0)、(3).toDouble) } results.toMap } 'ビルドする個々のタプルごとにtoMapを呼び出すと、各行をマップに変換します(単一のエントリで)。したがって、あなたは 'List [Map [String、Double]]のままになります。代わりに、最初に 'List [(String、Double)]全体を構築して、それがうまくいくことを期待して' toMap'を呼び出すと – rmathews7

+0

がうまくいきました。ありがとうございました –

関連する問題