Scala のメソッドと関数の違いに関する質問と、メソッドと関数の違いに関する多くの記事を読みました。「メソッド」は、クラス、トレイト、またはオブジェクトのメソッドとして定義された単なる「名前付き関数」であると感じました。「関数」は、それらの記事の「無名関数」または「関数リテラル」または「関数オブジェクト」のようなものを表します。証拠は本 Programming in Scala http://www.artima.com/shop/programming_in_scala_2ed、141 ページ、セクション 8.1 にあります。「関数を定義する最も一般的な方法は、オブジェクトのメンバーとしてです。関数はメソッドと呼ばれます。」
しかし、Scala 言語リファレンスhttp://www.scala-lang.org/docu/files/ScalaReference.pdfを確認したところ、名前付きメソッドのような概念があります。91 ページのセクション 6.20 戻り式: 「戻り式 return e は、囲んでいる名前付きメソッドまたは関数の本体内で発生する必要があります。」同じページや他の場所でも、「名前付き関数」という用語を見つけることができます。
私の質問は、Scala では、メソッド、名前付きメソッド、名前付き関数が同じ概念を参照しているのかということです。名前付き関数の定義はどこで取得しますか?
codeList(1, 2).map(_ + 1)では、元の式_ + 1は名前付きメソッドであり、メソッドは関数に変換されます。匿名関数、関数オブジェクト、名前付き関数の種類は何ですか?
私の理解では、Scala には 2 種類の関数しかありません。メソッドである名前付き関数です。関数リテラルである無名関数。関数リテラルは、Scala の純粋なオブジェクト指向の世界で使用されるように、トレイト FunctionN の関数オブジェクトにコンパイルされます。
しかし、上記のコードのような通常の名前付き関数/メソッド_ + 1の場合、なぜ Scala はそれを別の関数オブジェクトに変換するのでしょうか?