Получить значение функции метода экземпляра в Scala
Как мне получить значение функции 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)
будет тем же самым вызовом метода.
Ответы
Ответ 1
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>