首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变长参数Lambda表达式

变长参数Lambda表达式
EN

Stack Overflow用户
提问于 2022-09-22 12:03:05
回答 1查看 41关注 0票数 0

当我尝试在方法变量长度参数(int ...x)中写入时,我遇到了以下问题:“运算符'+‘不能应用于'int[]','int'”我想要理解,当我使用lambdas时可以使用(int ...x)吗?如果可以的话,如何使用?

代码语言:javascript
复制
class calculations {
    public static void main(String[] args) {
        func obj = (x) -> x+1;
        int result = obj.sum(10);
        System.out.println(result);
    }
}
interface func {
    int sum(int ...x);
}

我知道可变长度参数(int ...x)表示它是可选的,并表示一个数组,在此基础上,我可以添加多个参数,例如func obj = (x,y,w) -> x+y+w;,但是它不工作。

EN

回答 1

Stack Overflow用户

发布于 2022-09-22 12:08:09

在您的代码中,x不是一个int,而是一个数组int[]。因为sum()方法需要int的变量(即所有参数都将被一个辅助数组包装)。

因为这个原因,你得到了一个编译错误。

正确的实现可能是这样的:

代码语言:javascript
复制
func obj = x -> Arrays.stream(x).sum();

或者可以应用一些操作,例如通过1增量每个元素,就像您在代码中尝试的那样:

代码语言:javascript
复制
func obj = x -> Arrays.stream(x).map(i -> i + 1).sum();

Sidenote:接口名func语言命名约定不对齐。它应该以大写字母开头。另外,name func并不表示接口的用途(参见自记录代码)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73814316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档