2012-09-26 2 views
0

나는 호출 스택 때마다 성장할 것으로 생각 새 상태로 전환되고 성능 문제가 발생합니다. 호출 스택의 임의의 증가를 피할 수있는 방법이 있습니까? 꼬리 재귀 최적화가 이것과 관련이 있습니까?최적화 상태 (꼬리 재귀 최적화)를 통해 환승

def routing(call = :a) 
    begin 
    call = send call 
    end until call == :end 
end 

그런 다음 다른 방법이 바로 옆에 호출 할 메소드의 이름을 반환 :

def a 
    ... 
    case some_condition 
    when foo then :a 
    when bar then :b 
    else   :c 
    end 
end 

이 의지

+0

이 용도는 무엇입니까? 좋은 해결책을 고안하는 데 도움이 될 수 있습니다. –

+0

@AndrewMarshall 조건은 주로 사용자 입력 (gets를 통해)에 의해 구동되며 다음 상태는 현재 상태에 따라 결정됩니다. – sawa

답변

2

내 마음에 와서 첫 번째 솔루션은 라우팅 방법의 일종이다 통화 스택을 평평하게 유지하십시오. 라우팅 루프를 건너 뛰려면 return : end.

+0

이것은 아주 좋아 보인다. 나는 다른 가능한 대답이 있는지 잠시 동안 기다릴 것이다. – sawa

관련 문제