Вывод типа Scala для объявления анонимной функции - PullRequest
1 голос
/ 19 сентября 2010

Я новичок в Scala, и мне просто интересно, как Scala обрабатывает вывод типов для этого фрагмента кода

trait Expression { .... }

def eval (binding : String => Boolean) : Expression => Boolean

Я понимаю, что привязка - это функция, которая преобразует String в Boolean, но почему binding одновременно может быть объявлен членом Expression?это неявно преобразуется?Как это работает?

Извините, если мой вопрос немного сбивает с толку

Большое спасибо: D

Ответы [ 2 ]

5 голосов
/ 19 сентября 2010

Здесь нет абсолютно никакого вывода типов, как говорит Йорг В. Миттаг.

def eval (binding : String => Boolean) : Expression => Boolean

- это просто объявление абстрактного метода (абстрактное, потому что оно не имеет тела). Это может быть реализовано различными способами, в зависимости от определения Expression.

почему binding одновременно может быть объявлено членом Expression

Не может, учитывая только то, что вы отправили.

4 голосов
/ 19 сентября 2010

Я думаю, что ключевой момент в том, что функция eval возвращает функцию, тип которой Function2[Expression, Boolean].

Проще сказать:

def eval (binding : String => Boolean) : (Expression => Boolean)

Нет прямой связи между binding и Expression.

...