我试图弄清楚insert
函数在Ruby中的作用。
我已经咨询了Google和ruby-doc.com,但解释不足以描述这个(貌似)神秘的功能。
这让我感到困惑:
a = %w{a b c d}
puts a.insert(4, 5) output = a,b,c,d,5
提出的第一个问题是,为什么没有插入4?
puts a.insert(2,2,6)
输出结果为:
a
b
2
6
c
d
提出的两个问题是
答案 0 :(得分:45)
我不确定这是多么混乱。来自Ruby文档:
ary.insert(index, obj...) -> ary
在具有给定索引的元素之前插入给定值(可能是 负)。
a = %w{ a b c d }
a.insert(2, 99) #=> ["a", "b", 99, "c", "d"]
a.insert(-2, 1, 2, 3) #=> ["a", "b", 99, "c", 1, 2, 3, "d"]
因此,a.insert(2, 99)
正在数组偏移量2之前将99
插入数组中。请记住,数组的索引从0开始,因此这是第三个插槽阵列。
第二个例子是将数组[1,2,3]
插入到倒数第二个数组插槽中,因为负数偏移从数组的末尾开始计算。 -1
是最后一个索引,-2
是倒数第二个。
Array文档说得好:
数组索引 从C开始,就像在C或Java中一样。假设负指数是相对的 数组的结尾---也就是说索引为-1表示最后一个元素 数组,-2是数组中最后一个元素的倒数,依此类推。
这些是在编程中学习的非常重要的概念,而不仅仅是在Ruby中。
答案 1 :(得分:5)
看起来第一个参数是要插入的索引,其余的是要插入的项目。
docs似乎可以确认这一点,将该功能列为ary.insert(index, obj...) → ary
如果你只是想在数组的末尾添加一些值(我不知道Ruby语法,但这应该是正确的)我想你会想要调用a.insert(a.length, 4, 5)
或a.insert(a.length, 2, 2, 6)
,例如。