Ruby reduce方法代码中末尾返回result变量的作用解析
关于Ruby中reduce方法块末尾返回result的解释
要搞懂这行result的作用,得先明白Ruby里reduce(也叫inject)的核心规则:每次执行块代码后,块的返回值会作为下一次迭代的累加器(也就是这里的result)。
看你代码里的细节:
- 第6行
result[vote] += 1,这行代码的返回值是加1后的数字(比如第一次执行后返回1),而不是更新后的哈希对象。 - 如果没有第7行的
result,那下一次迭代时,result就会变成这个数字,而不是原来的哈希。这时候再执行result[vote]就会直接报错——因为整数类型没有[]这个方法,根本没法当作哈希来用。
所以这行result的作用就是:明确把更新后的哈希对象作为块的返回值,传递给下一次迭代的累加器,让reduce能持续用这个哈希来统计所有投票的次数。直到遍历完所有元素后,这个最终的哈希就是reduce方法的返回结果。
内容的提问来源于stack exchange,提问作者Esteban Serrano
相关产品推荐
相关产品推荐

