Scala の高階関数定義から提供された例にジャンプする方法を理解するのに苦労しています。これは、スライド 81のこのスライド ショーで提供されました。
高階関数の定義は次のとおりです。
trait X[A] { def map[B](f: A => B): X[B] }
提供されている例は次のとおりです。
(1 to 10) map { x => x * 2 } // evaluates to Vector(2, 4, ..., 20)
(1 to 10) map { _ * 2 } // shorthand!
は?!ここにはいくつかの手順が必要です。例では、関数定義といくつかの Scala の優れた点の両方を活用している可能性があることがわかりました。私は、Scala を読んだり、関連する仮定を作成したりするのに十分な経験がありません。
私のバックグラウンドは Java OO です。現在、Scala と関数型プログラミングを学んでいます。そして、これは私が理解していないこのような最初の例ではありません. 無知に見えることを知って投稿する勇気があったと感じたのはこれが初めてです。
これについて調べてみました。最初に、Scala の「バイブル」、「Programming in Scala 2nd Edition」に行き、そこから if を理解しようとしました (165 ~ 9 ページ)。次に、StackOverflow で検索を行いました。そして、その地域について話しているいくつかのリンクを見つけました。しかし、このスライドの特定のインスタンスに対応する方法で、Scala の高階関数定義と提供された例との関係を段階的に示しているものは実際には何もありません。
StackOverflowで見つけたものは次のとおりです。
Google をスキップして、StackOverflow に直接アクセスしたことに気付きました。うーん。グーグルで適切なリンクを見つけたら、ぜひご覧ください。サルモナド、ブラストモーフィズムなどの用語を使用するすべての Google リンクをふるいにかける時間はありませんでしたが、さらに混乱し、これを理解しようとする可能性が低くなりました。