2012-02-04 16 views
0

私はこのループを使用して行毎にファイルを読んでいる:ファイルI/Oループが途中で切断されましたか?

for(line <- s.getLines()){ 
    mylist += otherFunction(line); 
} 

変数mylistは、カスタムデータ型のコレクションを格納ArrayBufferです。 otherFunction(line);は、それが関連していないですので、あなたが見ることができるように私は、コードの多くを省略さまし

class CustomType(name:String,id:Int,num:Int){} 

...

def otherFunction(list:String)={ 
    val line = s.getLine(index); 
    val t = new CustomType(0,1,line(0)); 
    t 
} 

CustomType

は次のように定義されています...このような何かを行います。私は残りの関数を実行することができ、 otherFunction()の最後の行をコメントアウトしている限り、EOFまでファイルを1行ずつ読み込みます。この関数の値を自分のリストに戻すと、forループが停止するのはなぜですか?

+2

'otherFunction'は' Unit'を返しますので、あなたが望むことをしていない可能性があります。経験からも、エラーの原因は、人々が関連性がないと考えるものにある傾向があります。あなたのコードを裸のコンパイル可能なスニペットに減らすと、助けが簡単になります。 – huynhjl

+0

@huynhji私はあなたの要求を反映するように自分のコードを更新しました。 – user1189870

+0

あなたは 's'のタイプも排除していますが、これはかなり重要かもしれません... –

答えて

2

あなたがここで何をしようとしているのかは明確ではありません。私はsscala.io.Sourceオブジェクトだとします。 otherFunctionが使用しない文字列引数を受け取るのはなぜですか? getLineは推奨されておらず、indexがどこから来たのかは言わないでください。インデックス0の文字列の最初の文字を実際に参照したいのですが、本当にIntであるはずですか?これが実際にあなたがやりたいことであると仮定すると、なぜイテレータにmapを使用するだけではないのですか?

val list = s.getLines.map(i => new CustomType("0", 1, i(0).asDigit)).toIndexedSeq 
関連する問題