首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RUBY - Array初学者问题

RUBY - Array初学者问题
EN

Stack Overflow用户
提问于 2010-04-22 17:15:19
回答 2查看 185关注 0票数 1
代码语言:javascript
复制
a = [ 1, 3, 5, 7, 9 ]    → [1, 3, 5, 7, 9]

a[2, 2] = ’cat’          → [1, 3, "cat", 9]

a[2, 0] = ’dog’          → [1, 3, "dog", "cat", 9]

a[1, 1] = [ 9, 8, 7 ]    → [1, 9, 8, 7, "dog", "cat", 9]

a[0..3] = []             → ["dog", "cat", 9]

a[5..6] = 99, 98         → ["dog", "cat", 9, nil, nil, 99, 98]

我可以理解这个数组的最后四个修改是如何工作的,但是为什么他们使用a2,2=‘猫’和a2,0 =‘狗’?

这两个数字代表什么?

难道他们不能直接用a2 =‘狗’吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-22 17:22:23

a[x,n]是a的子数组,长度为n,从索引x开始。

因此,a[2,2] = 'cat'的意思是“获取位置2和3处的项”,并将它们替换为'cat',这就是为什么它取代了57 -而不仅仅是5

a[2,0] = 'dog'的意思是“获取位置2之前的空子数组,并将其替换为'dog'”。这就是为什么没有元素被替换的原因(a[2] = 'dog'会简单地用狗替换猫)。

票数 4
EN

Stack Overflow用户

发布于 2010-04-22 17:22:17

如果您在分配切片之前检查切片内容,则会很清楚

代码语言:javascript
复制
> a = [ 1, 3, 5, 7, 9 ] 
> a[2, 2]
=> [5, 7] # this mean if you assign to that, the content overwrite on that part
> a
=> [1, 3, "cat", 9]

狗也是一样的,0=‘a2’

代码语言:javascript
复制
> a[2,0]
=> [] # it will not overwrite anything,
> a[2, 0] = "dog" #but slice starts at index 2, so it will just insert 'dog' into array
=> [1, 3, "dog", "cat", 9]

另一方面,a2返回5,赋值将覆盖数据,因此不同。

代码语言:javascript
复制
> a = [ 1, 3, 5, 7, 9 ]
> a[2]
=> 5
> a[2] = 'dog'
=> [1, 3, "dog", 7, 9] # a[2] got overwritten, instead of getting inserted.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2689515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档