获取Scala中实例方法的函数值

时间:2009-09-20 06:37:46

标签: scala functional-programming

如何获取实例方法的函数值f

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)将是相同的方法调用。

2 个答案:

答案 0 :(得分:8)

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

defined class X

scala> val x = new X(10)

x: X = X@15b28d8

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

答案 1 :(得分:2)

this有用的参考表明方法没有函数,函数有方法 - 但是如果你想从方法中创建一个函数,也许这就是你想要的:

scala> def m1(x:Int) = x+3
m1: (Int)Int
scala> val f2 = m1 _
f2: (Int) => Int = <function>