scala for yield ディレクトリのファイル名をとる

scala yieldがよくわからん

コップ本 p137

[code lang=text] val filesHere = (new java.io.File(".")).listFiles

def scalaFiles =
for { file <- filesHere if file.getName.endsWith(".sbt") } yield file [/code]

反復的に生成された値を操作しただけで、操作後は忘れてしまっていたが、値を反復生成して記録しておくことができる。 とある。 配列に格納できる。

for式の本体が実行されるたびに結果値が生成される。生成された結果値をコレクションにまとめたものになる

上のものをyieldを使わないでprintlnするとこう

[code lang=text] scala>val filesHere = (new java.io.File(".")).listFiles filesHere: Array[java.io.File] = Array(./test.sbt, ./target, ./README.md, ./project, ./.gitignore, ./.git, ./discord-bot.js, ./build.sbt, ./.idea, ./src)

scala> for { | file <- filesHere | if file.getName.endsWith(".sbt") | } println (file) ./test.sbt ./build.sbt [/code]

ふむふむ

上のものを叩くとこうなる

[code lang=text] scala> scalaFiles res0: Array[java.io.File] = Array(./test.sbt, ./build.sbt) [/code]

今回はFile型なのでArray[File]になった

forで回した結果をまとめるのがyield でいいんじゃろか