gpt4 book ai didi

java - Java Lambda 表达式的附加参数 - 怎么样?

转载 作者:行者123 更新时间:2023-12-03 19:40:20 25 4
gpt4 key购买 nike

<分区>

如何在命名的 Java Lambda 表达式中使用额外的变量,就像我在匿名表达式中所做的那样?我找到了一个解决方法(方法返回一个 Lambda),但出于好奇:这也可以用纯 Lambda 语法来表达吗?我在通常的教程和引用资料中找不到答案。

请考虑以下示例代码:

Arrays.asList(1,2,3,4,5).stream().filter( i -> i<3 ).toArray();

我可以给这个匿名 Lambda 起个名字:

Arrays.asList(1,2,3,4,5).stream().filter(LessThanThree).toArray();
[...]
Predicate<Integer> LessThanThree = i -> i<3;

但是如果我想使用变量而不是常量,同样的语法将不起作用。因为我找不到向命名的 Lambda 声明参数的方法:

编辑:谢谢 dpr 暗示这是一个范围问题!我增强了以下代码块以尝试阐明我感兴趣的内容。

filterIt(3);
[...]
void filterIt(int x) {
Arrays.asList(1,2,3,4,5).stream().filter(LessThanX).toArray();
}
[...]
Predicate<Integer> LessThanX = i -> i<x; // won't compile!

解决方法似乎是返回 Lambda 的方法:

private Predicate<Integer> lessThanX(int x) {
return i -> i<x;
}

但是:有没有办法用纯命名的 Lambda 来表达它?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com