2010-04-22 5 views
1
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] 
내가 이해할 수

방법이 배열 작업의 마지막 네 개정, 그러나 그들은 [2, 2] = '고양이'와 [2,0] = '개를 사용 않는 이유 '???초급 - 배열 질문

두 숫자는 무엇을 나타 냅니까?

그들은 단지 [2] = '개'를 사용할 수 없었습니까?

답변

4

a[x,n] 길이 N의 인덱스에서 시작 X와의 서브 어레이이다. 뿐만 아니라 5 -

따라서 a[2,2] = 'cat'는 "위치 2와 3의 항목을"이이 57를 대체 이유입니다, 'cat'로 교체 의미한다.

a[2,0] = 'dog'은 "위치 2 이전의 빈 하위 배열을 가져 와서 'dog'"으로 바꾸는 것을 의미합니다. 이런 이유로 요소를 대체하지 않습니다 (a[2] = 'dog'은 cat을 dog로 간단히 대체합니다).

+0

완벽합니다. 감사합니다. – WANNABE

1

당신이 할당하기 전에 슬라이스 내용을 확인하는 경우 그것은 분명있을 것입니다 그것은 또한

> 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] 

는 A [2, 0] = '개'다른 측면에서

> 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] 

에 대한 동일한하는 [2]는 5를 반환하고 데이터를 덮어 씁니다. 따라서 같지 않습니다.

> 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. 
+0

감사합니다. 이것은 나를 많이 돕는다. – WANNABE

+0

안녕하세요. @WANNABE – YOU