2010-01-14 2 views
3

이 같은 if() 문이 :< or > 연산자를 매개 변수로 함수에 전달 하시겠습니까? 내 기능 내부

if(passedValue < staticValue) 

하지만 난 경우 표현이 위와 같이인지 여부를 지시 매개 변수 통과 할 수 있어야합니다 :

if(passedValue > staticValue) 

하지만를 위선자는 실제로 매개 변수를 가진 < 또는 > 연산자를 전달하므로이 작업을 수행하는 가장 좋은 방법은 무엇인지 궁금합니다.

만약 내가 사용하는 언어가 ActionScript 3.0의 문제인 경우

감사합니다 !!

답변

7

AS3에서는 불가능한 연산자를 전달하는 대신 맞춤 비교 함수를 전달하지 않으시겠습니까?

function actualFunction(passedValue:Number, compareFunction:Function) { 
    /* ... */ 

    if(compareFunction(passedValue, staticValue)) { 
     /* ... Do something ... */ 
    } 

    /* ... */ 
} 

그런 다음이 기능을 사용하려면

actualFunction(6, function(x:Number, y:Number) { 
    return x > y; 
}); 

또는 : 호출 수신자가 staticValue에 액세스 할 수 없습니다

actualFunction(6, function(x:Number, y:Number) { 
    return x < y; 
}); 
+0

좋은 해결책. 또는 작성자가 연산자를 문자열로 전달하려는 경우이를 사전 (lookup)으로 사용하여 올바른 함수 (사전 등에서)를 검색 할 수 있습니다. 선택적으로 공장에서 단순화하지만 더 많은 설정이 필요하지만 코드가보다 명확 해집니다. (예 : 호출 할 때마다 동적 함수를 생성하지 않음) –

+1

타일러 : 나는 "깨끗합니다"라고 생각하지 않습니다 ... 더 많은 코드를 유지 관리하는 것입니다 ... – LiraNuna

+0

"(즉, 각각의 위치에 동적 함수를 작성하지 않습니다. 호출이 이루어집니다. ") - Flash는 함수를 정적으로 최적화하므로 성능이 저하되지 않습니다. – LiraNuna

0

내가 ActionScript를 모르겠지만, 당신이라는 변수를 만들 수 없습니다 :

부울 초과] = TRUE;

만약 true라면, do, false 일 경우 <?

1

함수를 호출 할 때 bool을 인수로 사용하고 비교를 직접 수행하지 않는 이유는 무엇입니까?

ExampleFunction(arg1, (passedValue > staticValue)) 
+0

경우는 어떻게? – LiraNuna

0

맞아요, 운영자를 통과 할 수 없습니다. 어떤 연산자를 사용할 지 나타내는 변수를 전달할 수 있습니다.

lessThan = true; 
func(passedValue, lessThan);