2013-02-06 2 views
1

Ruby에서 배열을 실험하고 있습니다. 최대 중첩 배열 수에 액세스 할 수 없습니다. 예 실험은 다음과 같습니다Ruby에 중첩 배열 제한이 있습니까

array = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 

을 그래서, 당신은 루비에서 배열의 크기의 제한을 알 수 있습니까?

+0

3 대 4 이상 필요할만한 이유가 있습니까? –

+0

나는 이것이 단지 실험 일 뿐이라고 말했다. 오류가 발생할 때까지 다른 중첩 계층을 추가하는 프로그램을 쉽게 작성할 수 있었다. – sbagdat

+2

대답에 대해 –

답변

7

메모리 부족 현상이 발생합니다.

HunterMcMillen의 아이디어 @ 주석 당
+0

나는 그렇게 생각한다. 그러나 많은 언어가 몇몇 구조를 제한하고있다. 예를 들어 if-else 블록이 그 것이다. – sbagdat

+2

@sbagdat : ​​그런 종류의 것은 적용되지 않을 것입니다. 중첩 된 배열은 배열을 포함하는 배열을 포함하는 배열입니다 ... 최상위 레벨은 어떤 일이 일어나고 있는지 전혀 알지 못합니다. –

+0

제한은 스택 오버 플로우가 발생할 때입니다. – texasbruce

1

, 당신과 같이 테스트 할 수 :

# Warning: be prepared for a sad computer! 
depth=0; arr=[]; a=arr 
begin 
    while true do 
    b = [] 
    a.push(b) 
    a = b 
    depth += 1 
    end 
rescue => e 
    puts "OK: depth=#{depth}, error=#{e} (#{e.class})" 
end 

을 아마도 어떤 시점에서 일부 오류가 발생합니다 (예를 들어, 메모리 부족) 당신은 당신이 할 수 있었다 얼마나 많은 배열을 볼 수 있습니다 둥지에.