为什么是Array.new(10){| e | e = e + 2}产生[0 2 4 6 8 10 12 14 16 18]?

道格拉斯

我不理解以下示例中该块产生的结果:

下面的数组初始化:

my_arr = Array.new(10) { |e| e = e * 2 }

产生以下结果:

[0 2 4 6 8 10 12 14 16 18]

虽然我期望:[0 0 0 0 0 0 0 0 0 0]在我看来,元素e并未初始化,因此充其量充其量只能是零(尽管我希望是'nil'),并且零乘以某个数字总是返回零。或者我希望它是几何级数,而不是算术级数。所以为什么 ???所以一定有我想念的东西。

和以下代码:

my_arr = Array.new(10) { |e| e = e + 2 }

产生以下结果:

[2, 3, 4, 5, 6, 7, 8 , 9, 10, 11]

虽然我期望:[0 2 4 6 8 10 12 14 16 18]在我看来,元素e并未初始化,因此充其量最好为零(尽管我期望为“零”)。因此,它应该是2而不是1的算术级数。为什么?

我检查了红宝石参考资料,找不到任何线索来理解这些如此不直观的结果。

这个想法来自这里http://www.tutorialspoint.com/ruby/ruby_arrays.htm

我认为关键在于解释e应该代表什么价值

约翰西

可以这样写:

Array.new(10) { |index| index * 2 } #=> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

与您链接到的文档中的最终形式匹配的形式:

new(size) {|index| block }

创建给定大小(10)的数组的位置。通过将元素的索引传递到给定的块并存储返回值来创建此数组中的每个元素。

e每个元素初始化之后在示例中分配给的值将被丢弃。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果display(15)我想要结果1,2,3,4,5,6,8,9,10,12,15,16,18,20,24

为什么数组搜索错误对于案例[-2,0,10,-19,4,6,-8]失败

10行的-(B2 * SUM(C2:E2)> 0)的数组公式?

我希望输出像 [[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,10,12...18,20] ,[3,6,9...27,30].....[9,18,27..90]]

PCI-e电源-6 + 2等于8吗?

为什么R中的幂运算(例如10 ^ 6)要比计算器表示法(例如1e6)花费4倍的时间?

如何在MATLAB中创建模式为[1 2 5 6 9 10 13 14 17 18 ....]的向量?

角度迁移(从4迁移到6)e2e --proxy-config不起作用

为什么2a0 ++等于2a1,但2e0 ++等于3?

为什么ng e2e构建模块?

为什么地址大小不同?(0x206a10-0x104382e0)

E2E Angular 6 WebSocket模拟

为什么 math.simplify("1e-10").toString() 的 math.js 返回 0?

如何重复序列:r中的1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,7,8,9,10

Java 中用于匹配 C 10 10 或 L 1 2 6 2 或 R 14 1 8 3 的正则表达式

以2、8、10、16以外的底数提升mpz_int

DevTools使用Selenium和Python在ws://127.0.0.1:57671 / devtools / browser / 8a586f7c-5f2c-4d10-8174-7a7bf50e49b5上监听

我想把数组 [1,2,3,4,5,6,7,8,9,10,11] 变成数组 [1,2,3,4,5,6,7,8,9,1 ,0,1,1] 仅使用此算法

为什么:Math.floor(2e + 21)!= ~~(2e + 21)

为什么我的函数 (is_crowd) 不打印,我得到 <function is_crowd at 0xf6e128e4>?

MFCreateAudioRenderer 需要 guid 1082E6C2-7660-4945-8E78-228A3B3329F6 的奇怪属性

Python:将1,2,3-7,8,9,10变成这样的字符串1,2,3,4,5,6,7,8,9,10

如何使用熊猫从csv文件中的字符串读取2E2、2E4、3E2、3E4?

Windows CE 6.0 : 串口 IRQ 6, 3E8 仅传输 16 字节

在 Shopware 6 中创建一个新类别得到错误 /0/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name

Java 12上的Eclipse E4

Docker错误:无法启动服务...:找不到网络7808732465bd529e6f20e4071115218b2826f198f8cb10c3899de527c3b637e6

Python为什么10e26!= 10 ** 26?(浮点数不正确?)

将1,2,3,4,5,6,8,10,11显示为1-6,8,10-11