减少功能的细分

时间:2016-11-14 00:40:32

标签: scala reduce

我目前有:

x.collect()  
# Result: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

val a = x.reduce((x,y) => x+1) 
# a: Int = 6

val b = x.reduce((x,y) => y + 1)
# b: Int = 12

我试图按照这里所说的内容(http://www.python-course.eu/lambda.php),但仍然不太明白导致这些答案的个别操作是什么。

有人可以解释一下这里采取的步骤吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

原因是函数(x, y) => x + 1不是关联的。 reduce requires关联函数。这是在跨不同分区组合结果时避免不确定性所必需的。

答案 1 :(得分:1)

您可以将reduce()方法视为从集合中抓取两个元素,将它们应用于导致新元素的函数,并将该新元素放回集合中,替换它抓取的两个元素。这是重复完成的,直到只剩下一个元素。换句话说,之前的结果将被重新抓取,直到之前没有结果为止。

因此,您可以看到(x,y) => x+1导致新值(x + 1)与(x,y) => y+1不同的位置。级联通过所有迭代和...的差异