Получить значение функции метода экземпляра в Scala - PullRequest
6 голосов
/ 20 сентября 2009

Как получить значение функции 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 ]

8 голосов
/ 20 сентября 2009
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
2 голосов
/ 20 сентября 2009

эта полезная ссылка указывает на то, что у методов нет функций, у функций есть методы - однако, если вы хотите создать функцию из метода, возможно, это то, что вам нужно:

scala> def m1(x:Int) = x+3
m1: (Int)Int
scala> val f2 = m1 _
f2: (Int) => Int = <function>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...