2011-06-11 3 views
3

C# 대신 Javascript를 사용하는 경우를 제외하고는 this one과 비슷한 질문이 있습니다.표현식 패턴 일치

기본적으로,이 같은 if 문의 긴 목록을 사용하는 대신 표현에 패턴 매칭을 할 수 있도록하려면 :

var person.annoyingAction = match([person.gender, person.ageGroup], 
     [male, child], breakingStuff, 
     [male, teenager], drivingRecklessly, 
     [male, adult], beingLazyAfterComingHomeFromWork 
     [female, child], screechingInAnUnbelievablyHighPitchedVoice, 
     [female, teenager], knowingEverything, 
     [female, adult], askingPeopleIfTheyThinkIAmTooFat 
     [_, baby], cryingEveryTwoHoursAtNight, 
     [_,_], beingHuman); 

합니까 사람처럼 뭔가를 할 무언가를 구현하는 방법을 알고 Javascript에서? 내가 여기에 기존의 깨끗하고 해결책을 알고 있지만하지 않는

답변

1

일치 간단한 구현 무엇 귀하의 예제 :

var match = function(target) { 
    for (i = 1; i < arguments.length; i += 2) { 
    if (target[0] == arguments[i][0] && target[1] == arguments[i][1]) { 
     return arguments[i + 1]; 
    } 
    } 
} 

사용 예 : 당신이 할 수있는 자바 스크립트에서

var result = match(["Yellow", "Food"], 
    ["Red", "Food"], "Apple", 
    ["Green", "Plant"], "Grass", 
    ["Yellow", "Thing"], "Schoolbus", 
    ["Yellow", "Food"], "Banana", 
    ["Yellow", "Foot"], "Bad" 
) 

alert(result) # displays "Banana" 

배열을 직접 비교 ([1, 2] != [1, 2])하므로 요소를 개별적으로 비교해야합니다.