こんにちは!ぐちです。
今回はスイスアーミーナイフの続きをご紹介します!Scalaのfor式
は本当に便利だ!!と感じると思いますよ。
前回のVol.12はこちらからどうぞ。
フィルター
繰り返し処理を行う際に特定のデータにだけ適用したいときがあると思いますが、条件分岐しないといけないですよね?Scalaではフィルターという機能があるので、今回はその紹介みたいになっちゃいますね。
Java
まずはJavaでファイル一覧から処理をファイルだけに絞る処理を書いてみましょう!ファイルかどうかの判定にはisFile()
を用います。
import java.io.File; public class Main { public static void main(String[] args) { File[] files = (new File(".")).listFiles(); for(File f : files) { if(f.isFile()) { System.out.println(f); } } } }
まぁよくある形ですね!この条件分岐が増えてくると、もうなにがなんだかって状態になりませんか?笑
Scala
続きまして、Scalaで同様のコードを見てみましょう!
object Main { def main(args: Array[String]): Unit = { val files = (new java.io.File(".")).listFiles() for(f <- files if f.isFile) println(f) } }
一見何も変わってないように見えますが、よーく見てください。for式
にif
式が増えています。このif式
は繰り返し処理を行うデータを絞り込むことができます。もちろん複数の条件を書くこともできます。
繰り返しの絞り込みだから、for式
に含まれるのは非常に合理的でいいですよね!
では今回はこの辺で。