这是一些命令式代码:
var sum = 0
val spacing = 6
var x = spacing
for(i <- 1 to 10) {
sum += x * x
x += spacing
}
Run Code Online (Sandbox Code Playgroud)
以下是我尝试"功能化"上述代码的两个尝试:
// Attempt 1
(1 to 10).foldLeft((0, 6)) {
case((sum, x), _) => (sum + x * x, x + spacing)
}
// Attempt 2
Stream.iterate ((0, 6)) { case (sum, x) => (sum + x * x, x + spacing) }.take(11).last
Run Code Online (Sandbox Code Playgroud)
我认为可能有更清洁,更好的功能方式来做到这一点.那会是什么?
PS:请注意,以上只是用于说明问题的示例代码; 它不是来自真正的应用程序代码.