Skip to content

scala tips : function objects

Taisuke Oe edited this page Apr 11, 2015 · 1 revision

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

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

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

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

val addObj = add

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

 val addObj = add  _

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