OptionとListとforとflatMapではPersonのaddressメソッドの実装として、以下の2つを挙げた。Optionに対して、for文&パターンマッチングやflatMapメソッドを使うのがScala的なプログラミング。 いずれにしても一度ListにしてからList操作の関数を活用するのがポイントである。 class Person(val name: String) { var zip: Option[String] = None var prefecture: Option[String] = None var city: Option[String] = None def address: String = { (for (Some(s) <- List(zip, prefecture, city)) yield s).mkString(" ") } } class Pe