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 でいいんじゃろか