Лямбда выражения, странности с телом лямбд

72
24 июня 2021, 16:30

Вопрос написал ниже в комментах кода. Да там два вопроса, но второй не отдельный вопрос, а лишь уточнение первого вопроса.

package harc67;
import java.util.function.Predicate;
public class Panda {
    int age;
    public static void main(String[] args) {
        Panda p1 = new Panda();
        p1.age = 1;
        //check(p1,p -> p.age < 5); // почему так работает,
        check(p1,p -> {p.age < 5;}); // а так ошибка компилятора?
                                     // Почему наличие {} скобок возбуждает ошибку?
                                     // Вроде {} это скобки тела и то место где поставлены {}
                                     // является местом для написания тела лямбды.
    }
    private static void check(Panda panda, Predicate<Panda>pred) {
        String result = pred.test(panda) ? "match" : "not match";
        System.out.println(result);
    }
}

Уточнение!

Если в {p.age < 5;} вместо < написать любой другой символ, скажем знак присвоения - наличие ошибки не устранится. Нет, ошибка не будет указывать на то, что нужен boolean а мы пытаемся что то другое сделать, а ошибка будет таков "Missing return statement", а вот без скобок тела, в смысле в данном случае "check(p1,p -> p.age = 5);" - даст нужную ошибку а именно "Bad return type in lambda expression: int cannot be converted to boolean.

READ ALSO
Bootstrap + BootstrapVue. Как оптимизировать?

Bootstrap + BootstrapVue. Как оптимизировать?

Мы вроде бы избавляемся от jQuery и должны получить меньший размерjs файла, но в итоге он у меня получается ещё больше

105
Javascript. Формат переменной

Javascript. Формат переменной

У меня два вопроса: 1) Я передаю в функцию circle: number - начальная позиция круга, final - конец круга, selector - объект, c которым я буду работать, найденный...

91
пропадает элемент, когда jquery объект конвертирую в массив

пропадает элемент, когда jquery объект конвертирую в массив

Снимок из лога сначала в объекте 4 элемента, потом получаю массив из DOM элементов, $itemslength так же 4, но консоль показывает, что длина массива...

89