Получить значение функции метода экземпляра в 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)
будет такой же вызов метода.
2 ответа
Решение
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
эта полезная ссылка указывает на то, что у методов нет функций, у функций есть методы - однако, если вы хотите создать функцию из метода, возможно, это то, что вам нужно:
scala> def m1(x:Int) = x+3
m1: (Int)Int
scala> val f2 = m1 _
f2: (Int) => Int = <function>