Когда Scala нужны типы параметров для анонимных и расширенных функций?

Когда компилятору Scala действительно нужен тип информация о параметрах анонимных функций?

Например, для этой функции:

def callOn[T,R](target: T, f: (T => R)) = f(target)

я не могу использовать ее так:

callOn(4, _.toString)
  => error: missing parameter type for expanded function ((x$1) => x$1.toString)

и я должен указать

callOn(4, (_: Int).toString)

, что довольно некрасиво. Почему мой пример не работает, тогда как такие методы, как map, filter, foldLeft и т. Д. В классах коллекции, похоже, не нуждаются в этом явном типе?

7
задан Jean-Philippe Pellet 4 February 2011 в 14:50
поделиться