2012-08-30 3 views
1

일반 Switch 문을 사용할 때와 같이 사용해야하는 경우는 언제입니까? 각 장단점은 무엇입니까?작업 이름을 일반 Switch 문과 함수에 매핑하는 객체는 언제 있습니까?

function ABC(i, j, a) { 
    var ops = { 
    'add': function(i, j) { return i + j; }, 
    'minus': function(i, j) { return i - j; }, 
    'multiply': function(i, j) { return i * j; }, 
    'random': function(i, j) { 
     return ops[['add', 'minus', 'multiply'][Math.floor(Math.random() * 3)]](i, j); 
    } 
    }; 
    return ops[a](i, j); 
} 

답변

1

장점 : 그것은 훨씬 더 유연하다. 함수를 어디에서나 정의 할 수 있으며 런타임에 다시 할당하거나 프로그래밍 방식으로 사전을 생성 할 수도 있습니다.이 경우 패턴을 제외하면 큰 효과가 있습니다. 사전을 나중에 다시 사용하거나 전달할 수도 있습니다.

단점 : 컴파일 된 언어에서는 속도가 느릴 수 있습니다. (JIT를 사용하면 별 문제가되지 않습니다.) 작은 코드 스 니펫의 경우 스위치 버전을보다 쉽게 ​​읽을 수 있습니다.

개인적으로는 dict 접근법을 선호하지만, 다시 파이썬으로 주로 코드화합니다.

관련 문제