为什么映射可枚举的返回值不返回期望值

安德鲁·金

我对Ruby Enumerable模块非常熟悉,或者至少我如此认为。采取以下代码段:

names = [ "Donald", "Daisy", "Daffy" ]

new_empty_array = []

new_names_array = names.map do |name|
  new_empty_array << name
end

puts new_names_array.inspect
# prints [["Donald", "Daisy", "Daffy"], ["Donald", "Daisy", "Daffy"], ["Donald", "Daisy", "Daffy"]]

我知道我使用的方式不map正确,但是我正在上一堂关于Ruby枚举的课程,并且在一个学生进行测试时遇到了这个示例mapshovel(<<)运算符的返回值是添加元素后的数组。结果不应该是:

[["Donald"], ["Donald", "Daisy"], ["Donald", "Daisy", "Daffy"]]

似乎整个循环过程和铲子运算符的最终返回值都已处理?是什么赋予了?

魔杖制造者

map在您的情况下,的结果是一个数组,该数组由new_empty_array多次引用相同的数组组成您不是在创建三个不同的数组,而是在map块中修改了相同的数组

要获得期望的输出,您需要执行以下操作:

new_names_array = first_names.map do |name|
  (new_empty_array << name).dup
end

附带说明一下,您可以使用此代码(比上面的代码更明显)获得所需的输出:

(1..first_names.size).map do |num|
  first_names.take(num)
end
#=> [["Donald"], ["Donald", "Daisy"], ["Donald", "Daisy", "Daffy"]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mockito什么时候/然后不返回期望值

来自分类Dev

任务ContinueWith不返回期望值

来自分类Dev

标量UDF不返回期望值

来自分类Dev

为什么返回值不更新?

来自分类Dev

函数不返回值,为什么?

来自分类Dev

为什么查询不返回值

来自分类Dev

为什么不返回值?

来自分类Dev

preg_match_all不返回期望值

来自分类Dev

嵌套匹配的索引不返回期望值

来自分类Dev

XNA Rectangle.Center不返回期望值

来自分类Dev

preg_match_all不返回期望值

来自分类Dev

为什么++ i ||不 ++ j && ++ k给出期望值

来自分类Dev

为什么此正则表达式返回期望值的较短版本?

来自分类Dev

映射函数不返回值

来自分类Dev

Spock存根未返回期望值

来自分类Dev

COUNTIF公式未返回期望值

来自分类Dev

Ruby命令未返回期望值

来自分类Dev

当最大值返回NULL时,函数不返回期望值

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么systemctl在NRPE检查中不返回值?

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么这个简单的函数不返回值?

来自分类Dev

为什么这个方法不返回值?

来自分类Dev

期望int返回值

来自分类Dev

不返回值

来自分类Dev

使用从createFromFormat创建的值添加到DateTime时不返回期望值

来自分类Dev

List.contains为长值不返回期望值(常规)

来自分类Dev

枚举未返回值

来自分类Dev

应用程序脚本:映射未将期望值返回到数组