我目前有:
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),但仍然不太明白导致这些答案的个别操作是什么。
有人可以解释一下这里采取的步骤吗?
谢谢。
答案 0 :(得分:1)
原因是函数(x, y) => x + 1
不是关联的。 reduce
requires关联函数。这是在跨不同分区组合结果时避免不确定性所必需的。
答案 1 :(得分:1)
您可以将reduce()
方法视为从集合中抓取两个元素,将它们应用于导致新元素的函数,并将该新元素放回集合中,替换它抓取的两个元素。这是重复完成的,直到只剩下一个元素。换句话说,之前的结果将被重新抓取,直到之前没有结果为止。
因此,您可以看到(x,y) => x+1
导致新值(x + 1)与(x,y) => y+1
不同的位置。级联通过所有迭代和...的差异