Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby – every_with_object应该如何工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
新的ruby,我试图找出如何使用every_with_object.

我试着用一个非常简单的数字,所以我写道:

> (1..3).each_with_object(0) {|i,sum| sum+=i}
=> 0

嘿,我会假设结果将是6!我的错误在哪里

解决方法

each_with_object在不可变对象(如整数)上不起作用.
(1..3).each_with_object(0) {|i,sum| sum += i} #=> 0

是因为each_with_object遍历一个集合,将每个元素和给定对象传递给块.它不会在每次迭代后更新对象的值并返回原始给定对象.

它将使用哈希,因为改变哈希键的值会自动更改原始对象.

(1..3).each_with_object({:sum => 0}) {|i,hsh| hsh[:sum] += i}
#=> {:sum => 6}

字符串对象是有趣的情况.它们是可变的,所以你可能会期待以下
返回“abc”

("a".."c").each_with_object("") {|i,str| str += i} # => ""

但它没有.这是因为Str =“a”返回一个新对象,原始对象保持不变.但是,如果我们这样做

("a".."c").each_with_object("") {|i,str| str << i} # => "abc"

它的作用是因为Str < “a”修改原始对象. 有关更多信息,请参阅ruby docs for each_with_object

为了您的目的,请使用inject

(1..3).inject(0) {|sum,i| sum += i} #=> 6
# or
(1..3).inject(:+) #=> 6

大佬总结

以上是大佬教程为你收集整理的ruby – every_with_object应该如何工作?全部内容,希望文章能够帮你解决ruby – every_with_object应该如何工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。