2016-12-23 2 views
0

最初のヘッダー行とは別に、ファイル内のすべての行に "14022015"という文字列が含まれていることを確認します。私はこれをScalaの方法をやってみたかったと私はfoldLeftを使用して巧妙な何か(私は思った)を思い付いた:私はテストから除外される必要があるヘッダ行、知ったscala iteratorのテール

assert(Source.fromFile(new File(s"$outputDir${File.separator}priv.txt")) 
    .getLines().foldLeft(true)((bool, line) => (bool && line.contains("14022015")))) 

まで。 getLinesがIteratorを返し、Listを返さないため、tailは機能しません。私が何かできることはありますか(Scala wise)?それが見えますfold常に全体のイテレータをスキャンして、あなたのコードに基づいて - サイドノート、この場合には代わりにfoldの再帰的なソリューションを使用することを検討してください:

答えて

2

iterator.drop(1)はあなたが

UPDが必要正確に何を達成するのに役立ちますそれは単にfalse

6

に遭遇するとのようなあなただけの標準a && b && cのように、ショートにしたいことは、すぐにリストダウン式を評価するつもりはない。

val res: Boolean = myFile.getLines.drop(1).forall(_.contains("14022015"))