Как мне создать переменную внутри лямбда-выражения?

#java #lambda

#java #лямбда

Вопрос:

Это может быть глупый вопрос, но, похоже, я не могу найти какие-либо хорошие ресурсы по этому вопросу.

В настоящее время у меня есть следующий лямбда:

 public static final Predicate<Path> TEXT = path -> (path.toString().toLowerCase().endsWith(".txt") || (path.toString().toLowerCase().endsWith(".text")));
 

Я хочу применить результат path.toString().toLowerCase к переменной, чтобы я мог просто вызвать:

 (result.endsWith(".txt") || result.endsWith(".text"))
 

Как я могу сделать это в лямбда-выражении?

Ответ №1:

Вы должны использовать блок вместо выражения для тела лямбда-выражения:

 public static final Predicate<Path> TEXT = path -> {
    String result = path.toString().toLowerCase();
    return result.endsWith(".txt") || result.endsWith(".text");
};