gpt4 book ai didi

scala - 匿名参数工作 - 但不是明确的 - 用于 scala reduceLeft

转载 作者:行者123 更新时间:2023-12-04 11:22:59 24 4
gpt4 key购买 nike

给定一个简单的序列:

scala> val a = Seq(1.0,2.0,3.0)
res8: Seq[Double] = List(1.0, 2.0, 3.0)

让我们把它们加起来!
scala> a.reduceLeft{_ + _}
res6: Double = 6.0

但是如何明确参数呢?这是我的尝试:
scala> a.reduceLeft{case(b,c) =>   b+c}

嗯..不..我们有一个类型不匹配:
<console>:9: error: missing parameter type for expanded function

The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: (?, Double) => ?
a.reduceLeft{case(b,c) => b+c}
^
<console>:9: error: type mismatch;
found : Any
required: String
a.reduceLeft{case(b,c) => b+c

但即使我明确添加类型,它也不起作用:
scala> a.reduceLeft{case(b:Double,c:Double) =>   b+c}

<console>:9: error: missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: (?, Double) => ?
a.reduceLeft{case(b:Double,c:Double) => b+c}

那么这里发生了什么?

最佳答案

reduceLeft需要一个 Function2不是 Function1带有元组输入参数。因此,您不需要使用 case模式匹配;你只需要命名你的两个输入参数。

不幸的是,错误消息在这里并不是特别有用,因为它确实说明了它缺少什么,但并没有以一种真正清楚地指示您为什么您所做的事情不对的方式。

使用 a.reduceLeft( (a,b) => a + b ) . (大括号也很好。)

关于scala - 匿名参数工作 - 但不是明确的 - 用于 scala reduceLeft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652434/

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