概要 C言語にはクラスという概念が無いので、定義できるのは全て「関数」(と呼ぶ)。 Javaではクラス内にしか定義できないので、全て「メソッド」。 Scalaは関数型言語なので、defで定義されるものを「関数」と呼ぶ…かと言うと、そうでもない。 Scalaにはオブジェクト指向言語の特徴も含まれているので、クラス(やトレイト)内で定義されたdefは「メソッド」と呼ばれることも多いようだ。 自分は、使い方に応じて「メソッド」と「関数」を呼び分けている。 classやtraitの直下でdefで定義され、呼び出し時に「インスタンス.」(「this.」「super.」やthis省略も含む)を付けて呼び出すものは「メソッド」。 そうでないものは概ね「関数」。 Scala内部では(JavaVM上で稼動することもあって)全ての関数はメソッドとして定義されるが、表面上classやtraitに属していないもの