2012-04-06 9 views

Odpowiedz

11

Ta droga jest krótsza 10 symbole:

val af = (_: A).f _ 
2

Można utworzyć instancję i importować metod:

val a = A(4) 
import a._ 

Nie ma innego sposobu na osiągnięcie tego, bo x musi posiadać wartość. Można jednak utworzyć Singleton obiekt zamiast af klasę i zmienić swoje podpisy metoda odpowiednio:

object A { 
    def f(x:Int)(y:Int) = x*y 
} 

import A._ 

O ile wiem, to nie jest możliwe, aby włączyć wszystkie metody klasy w curry (constructor)(method signature) funkcji.

2

nie wiem dlaczego u chcą, ale u rzeczywiście można osiągnąć następujące:

scala> case class A(x:Int){ def f(y:Int)=x*y} 
defined class A 

scala> val af = A(2).f _ 
af: (Int) => Int = <function1> 

scala> af(3) 
res0: Int = 6 
Powiązane problemy