メソッドから関数オブジェクトを取得する

この方法は意外と知られていないようなので、Tipsとして追加してみることにしました。メソッド!=オブジェクトにも書いたのですが、Scalaではメソッド(defで定義されるもの)はオブジェクトではありません。そのため、

def add(x: Int, y: Int) = x + y

のようにして定義したメソッドを、次のようにしてオブジェクトとしてとり出す事はできません。

val addObj = add

このコードで意図していることを行うためには、

val addObj = add _

のように、メソッド名の末尾の後に一つ以上スペースを空けて、 _(アンダースコア)を付ける必要があります。