我想确保是否可以通过使用 reduceLeft 而不是 foldLeft 来完成此任务。我正在列表中搜索给定的号码

val included = List(46, 19, 92).foldLeft(false) { (a, i) =>
| if (a) a else (i == 19)
| }
included: Boolean = true

但是我想使用 reduceLeft 完成相同的工作,这可能吗?

最佳答案

不直接。答案通常就是类型。

reduceLeft具有类似的类型:

List[A] => ((A,A) => A) => A

给定一个A列表,以及一个可以将2 A值组合为1 A值的函数,您将获得一个A值。

您可以做的是:
val a = List(46, 19, 92).reduceLeft { (a, b) =>
 if(b == 19) b else a
}

val included = a == 19

当然,为此,最好使用“包含”,而不是使用这些选项中的任何一个。

关于scala - 在scala中使用reduceLeft代替foldLeft,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36921978/

10-10 01:03