面试题答案
一键面试def higher_order_function(func)
lambda do |arr|
arr.inject(0) { |sum, element| sum + func.call(element) }
end
end
闭包在这个过程中起到了保存外部函数作用域中变量(这里是传入的 func
)的作用。当 higher_order_function
返回新的函数(一个 lambda
)时,这个新函数形成了闭包。它记住了在创建它时 higher_order_function
作用域中的 func
,即使 higher_order_function
已经执行完毕,其作用域已经消失,新函数依然可以访问并使用 func
对数组元素进行操作。这样使得新函数具有了对 func
的持久引用,从而能够完成对数组元素应用 func
并累加结果的功能。