2010-12-12 4 views
1

가능한 중복 :
Array slicing in Ruby: looking for explanation for illogical behaviour (taken from Rubykoans.com)루비 배열의 모든 인덱스

내 루비 인터프리터에이 코드를 실행은 7..4 출력 전무과 끝, 그리고 6..4 아무것도

를 출력하지
arr = [1, 2, 3, 4, 5, 6] 

p arr[7..4] 
p arr[6..4] 

초기 색인이 범위를 벗어난 경우 루비 의사에 따르면이 색인에는 nil이 반환됩니다. both both (6 & 7)가 배열의 범위를 벗어 났지만 첫 번째 만 nil을 반환합니다. clairification위한

편집 : 출력은 다음과 같다 :

nil 
[] 

왜 것이 제 복귀 닐 및 제 []?

+0

중복되지 않습니다. 이 질문에서 우리는','대신에'..'를 가지고 있고, 테두리를 뒤집습니다. – Nakilon

+1

@Nakilon : 차이는 없습니다. 중요한 것은 첫 번째 색인입니다. @Paul : 슬라이싱의 결과가 무엇인지에 대한 혼동을 피하기 위해'puts'을'p'로 바꾸어야하고,'puts' 자체의 결과는 무엇입니까? –

+0

좋아요, 저는 정말로, 중복 된 것을 다시 읽었습니다. – Nakilon

답변

1

음, 아마도 인터프리터는 [3..1]는 범위가 아니기 때문에

puts arr[3..1] 

도 어쩌면 아무것도 반환 노력하고, "감소"범위를 이해하지 못합니다. [] s

+1

그 중 하나는 empty []를 반환하고, 다른 하나는 값 nil을 반환합니다. 그들은 모두 nil을 반환하거나 []를 반환해야합니다. nil과 one [1]을 수행하는 것이 아닙니다. 차이가 나는 경우 이는 osx에서 1.8.7입니다. – Paul

+1

"inverted"범위를 사용하여 배열을 잘라내는 것은 보통 Ruby에서입니다 : 예를 들면 :'[1,2,3,4] [1 ..- 2]'는'[2, 3]'을줍니다. –

+0

권자, 나는 모른다. 좋은! 감사합니다 @ Mladen – Cloudson

관련 문제