2016-09-29 8 views
0

scalaで基本的なハンドソンを行っています。processListというメソッドを定義する場所にコンパイルエラーが発生します。List [Record]を渡してメソッドを呼び出すときにScalaコンパイル時エラーが発生しました

コンパイル時エラーが

Multiple markers at this line: 
- only classes can have declared but undefined 
members 

次のように私のコードは、私が誰かがこの上で私を助けることができ、この問題を解決する方法を知らない

package pack1 

import scala.io.Source 

case class Record(id:Int, name:String, city:String) 

object ReadingFile { 

    def main(args: Array[String]): Unit = { 
    val fileLoc:String = "/home/edureka/surender/inputfiles/records.txt" 

    val fileData:List[String] = Source.fromFile(fileLoc).getLines().toList 

    val fileList =fileData.map { eachLine => { 
     val Array(a:String,b:String,c:String) = eachLine.split(",") 
     Record(a.toInt,b,c) 
    } } 

    println(fileList) 

    processList(fileList) 

    } 

    def processList(myList:List[Record]) 

    { 

    } 

} 

あるのですか?

答えて

0

def processList(myList:List[Record])の後に新しい行があるため、Scalaコンパイラはメソッド実装が指定されておらず、ブロック{}の下にメソッドに属していないと考えます。だから、コンパイラは抽象メソッドを考えています。

代わりにこの

def processList(myList:List[Record]) 
            //remove this line to fix the error 
    { 

    } 
+0

構文は廃止されました、ことを修正。代わりに ':Unit = {}'を使用してください。 –

+0

http://stackoverflow.com/questions/24847386/whats-the-difference-between-using-and-no-using-a-in-scala-defs/24851910#24851910 –

+0

@GabrielePetronellaを参照してください。提案 – pamu

-1

このコードの問題はここにあるのこの

def processList(myList:List[Record]) { 

} 

または

def processList(myList:List[Record]): Unit = { 

} 

のような宣言processList

def processList(myList:List[Record]) 
         // <------ Notice this blank line 
{ 

} 

これにより、コンパイラはこれらが2つの異なるステートメントであると考えるようになります。したがって、実装を提供せずにdef processList(myList:List[Record])を残したと考えられます。 classまたはcase classobjectには、実装されていないメンバーを含めることはできません。

そう...ちょうどあなたが示唆

def processList(myList:List[Record]): Unit = { 
} 
+0

崇高な主が何らかの理由もなく答えを下降させると考えたのは誰ですか? –

関連する問題