Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

関数型言語でより抽象化が進むんだなあ

関数型言語ど素人です。
多忙な Java 開発者のための Scala ガイド: オブジェクト指向のための関数型プログラミング

object HelloArguments
{
  def main(args: Array[String]): Unit = {
    args.filter( (arg:String) => arg.startsWith("G") )
        .foreach( (arg:String) => Console.println("Found " + arg) )
  }
}

関数が引数に関数をとる。
だから定義した時点では処理は抽象化されてる。
実際に実行するときにどんな関数を引数に渡すかで処理が変わる。
言語仕様としてすべてが式だったとこも関連してくるね。

Arrayクラスのfilter()メソッドとforeach()はこう定義されてる。

filter (p : (A) => Boolean) : Array[A]
foreach(f : (A) => Unit) : Unit

Javaでいう引数にインターフェースを定義するよりももっと抽象化が進んでる感じ??