я могу быть далеко здесь - но был бы признателен за представление о том, как далеко ..Назначить анонимную функцию методу scala?
В следующем getFiles
методе мы имеем анонимная функция передается в качестве аргумента.
def getFiles(baseDir: String, filter: (File, String) => Boolean) = {
val ffilter = new FilenameFilter {
// How to assign to the anonymous function argument 'filter' ?
override def accept(dir: File, name: String): Boolean = filter
}
..
Так что override
совершенно неверно: что синтаксис пытается evaluate
функцию фильтра(), что приводит к Boolean.
Естественно, мы могли бы просто оценить анонимную функцию следующим образом:
override def accept(dir: File, name: String): Boolean = filter(dir, name)
Но такой подход фактически не replace
метод.
Итак: как назначить метод accept
анонимной функции filter
?
Update сообщение об ошибке
Error:(56, 64) type mismatch;
found : (java.io.File, String) => Boolean
required: Boolean
override def accept(dir: File, name: String): Boolean = filter // { filter(dir, name) }
Очередное обновление мышление подробнее об этом - и я собираюсь взять хабар: Динамические языки, такие как Python и рубин может обрабатывать назначение методов класса для произвольных функций , Но scala требует компиляции, и, таким образом, методы фактически статичны. Будет оценен окончательный ответ на эту догадку.
Исходный код не объяснить компьютеру, как применить фильтр. Вы должны оценить функцию фильтрации внутри метода accept. Для вашего фильтра есть два аргумента. 'override def accept (dir: File, name: String): Boolean = filter (dir, name)' должен это сделать. –
@BobDalgleish, пожалуйста, смотрите OP: я добавил разъяснения, прежде чем ваш комментарий появился, но, вероятно, после того, как вы увидели исходный пост. – javadba
@Paul добавила сообщение об ошибке в OP – javadba