-1
私はスカラーに足を浸しているだけで、なぜこのメソッドがコンパイルされないのかに固執しています。ヘッダーにディレクトリパスとテキストファイル名が与えられたファイルを探し、テキストファイルの最初のn行を返すようにします。私が得るコンパイルエラーは:スカラリターンタイプ関数の不一致
タイプの不一致です。
が見つかりました:単位
が必要:あなたが期待するよう文字列
import java.io._
def header(fileName:String, directory:String =".",n:Int=5): String = {
val files = new File(directory).listFiles
for (file <- files if file.getName == fileName) {
val source = scala.io.Source.fromFile(file)
try{
val string=source.getLines.toList.slice(0,n).mkString
string
}
catch {
case e: Exception => "not good. something went wrong"
}
finally{
source.close
}
}
}
私はスカラを学習する際に、より多くの機能プログラミングパターンを自分のコードに入れようとしているので、2番目のフィルタ/マップメソッドはかなり滑らかです。 –
間違いなく、機能していない言語でのやり方としての最初の答えは使用しないでください。 – prayagupd
しかし、最後に各ソースを閉じるのはどうですか?私は、mapメソッドの関数リテラルにsource.closeを追加しようとしましたが、それは再びタイプエラーを出しました。 –