Предположим, что у меня есть простой класс в Scala:
class Simple {
def doit(a: String): Int = 42
}
Как я могу сохранить в val Function2 [Простой, Строка, Интервал], который берет два аргумента (целевой Простой объект, Аргумент строки), и может звонить, мелкая монета () получают меня результат назад?
то же, что и sepp2k, только используется другой синтаксис
val f = (s:Simple, str:String) => s.doit(str)
Для тех из вас, кто не любит печатать типы:
scala> val f = (_: Simple).doit _
f: (Simple) => (String) => Int = <function1>
Следование методу _
работает для любой арности:
scala> trait Complex {
| def doit(a: String, b: Int): Boolean
| }
defined trait Complex
scala> val f = (_: Complex).doit _
f: (Complex) => (String, Int) => Boolean = <function1>
Это покрывается комбинацией §6.23 "Синтаксис заполнителя" для анонимных функций »и §7.1« Значения методов »в Справочник по Scala