2009-11-06 5 views
1

는 다음 함수 본문 고려하시기 바랍니다 :부울 연결? 이 패턴의 실제 용어는 무엇입니까?

var isValidated = true; 
$(selector1).each(function(){ 
    //do validation with local f()... 
    isValidated = f() && isValidated; 
}); 

$(selector2).each(function(){ 
    //do validation with local f()... 
    isValidated = f() && isValidated; 
}); 

$(selector3).each(function(){ 
    //do validation with local f()... 
    isValidated = f() && isValidated; 
}); 

return isValidated; 

isValidated의 진행의 내 설명 부울 연결입니다 ---하지만이 일 공식, 컴퓨터 과학 용어이 있어야한다. 이게 뭐야? 명확히하기 위해, 여기에있는 아이디어는 각각 $() 블록을 실행하게하는 것입니다. 그러나이 블록 중 하나에 유효성 검사 오류가 발생하면이 오류의 결과는 모든 블록 (true && true && false == false)에 대해 false을 반환해야합니다. 그래서, 많은 프로그래머와 마찬가지로, 나는 어떤 종류의 패턴을 사용하고 있습니다 만, 우리는 종종 그것이 무엇인지 불리지는 않습니다. 그렇다면이 패턴은 유용 할만한 것과 비슷합니까?

답변

10

Boolean Logic. (그리고 "연결 작업"섹션 참조).

+1

+1 George Boole! –

+3

또한 관심의 대상 : 단락 회로 평가 : http://en.wikipedia.org/wiki/Short-circuit_evaluation –

+0

오케이 : 이렇게 부울 체인이라고도 할 수 있습니다. ... – rasx

3

이것이 이름이 지정된 패턴인지는 확실하지 않지만 사소한 관찰을 지적하고 싶습니다. 부울을 반환하기 때문에 수표를 전환하여 첫 번째 실패 후 불필요하게 추가 기능을 실행하지 않고 거짓 논리 것입니다 단순히 단락 : 그들은 사용자에 대한 오류와 UI 필드를 표시하는 등의 일을하는 경우

isValidated = isValidated && f(); 

유일한 이유는 (당신은 여전히 ​​모든 F를 실행 보장)입니다. 단순히 유효성을 검사하는 경우 외부 검사가 거짓이면 실행하지 않아도됩니다.

+0

@bmoeskau 당신은 정확합니다 : 모든 f()는 UI 필드 마킹을 위해 실행해야합니다 ... – rasx

+1

함수가 유효성 검사를 수행하고 UI를 표시하는 경우 너무 많은 일을합니다. 그것들은 별개의 관심사입니다. – rmeador

1

.each() 함수를 사용할 수 있다고 가정합니다.이 함수는 열거 형에서 단일 값을 작성할 때 사용하는 것이 좋습니다.

function validated(a) { 
    return a.inject(true, function(acc, el){ return(acc && f()); }); 
} 

return validated($(selector1)) && validated($(selector2)) && validated($(selector3)); 
+0

@ mattgillooly.com : 다른 함수 중에서 'isValidated'와 같은 변수를 공유하지 않기 때문에 여기에 접근하는 것이 좋습니다 ... – rasx

관련 문제