2009-09-20 12 views
6

インスタンスメソッドの関数値fを取得するにはどうすればよいですか?Scalaのインスタンスメソッドの関数値を取得

class X(i : Int){ 
    def method(y : Int) = y + i 
} 

val x = new X(10) 
val f : (Int) => Int = ? 

val r = x.method(2) 
val r2 = f(2) 

x.method(2)f(2)を呼び出すと、同じメソッド呼び出しになります。 -

答えて

8
scala> class X(i : Int){ def method(y : Int) = y + i } 

defined class X 

scala> val x = new X(10) 

x: X = [email protected] 

scala> val f = x.method _ 

f: (Int) => Int = <function> 

scala> val r = x.method(2) 

r: Int = 12 

scala> val r2 = f(2) 

r2: Int = 12 
2

this便利な参照はメソッドが機能を持っていないことを示し、関数はメソッドを持っているあなたはメソッドから関数を作りたかったがあれば、おそらくこれはあなたが望むものである:

scala> def m1(x:Int) = x+3 
m1: (Int)Int 
scala> val f2 = m1 _ 
f2: (Int) => Int = <function> 
関連する問題