논리적 또는에서 만약 내가 하고 싶은 말 만약 myParameter 같지 않다 Parameter1 또는 Parameter2에 입력한 다음 무언가를 반환합니다.하지만 다음 기능이 예상대로 작동하지 않습니다.,. 내가 어디로 잘못 가고있는거야
Names Default To Here(1);
myFunc = function ({myParameter}, {default local},
If (myParameter != Or("Parameter1","Parameter2"),
return(Eval Insert("output some msg")),
);
);
clear log ();
output = myFunc ("Parameter1");
스크립팅Re: 논리적 또는당신은 아마 이것을 의미합니다 (내가 가장 좋아하는 것)
if ( (myParameter != Parameter1) & (myParameter != Parameter2) , ...
이것은 이것과 같다
if( ! ( (myParameter == Parameter1) | (myParameter == Parameter2) ), ...
또는 or() 함수를 사용하는 방식은 다음과 같습니다.
if( !or(myParameter==Parameter1, myParameter==Parameter2), ...
https://en.wikipedia.org/wiki/De_Morgan%27s_laws
또한 누락된 값이 있는 경우 예상한 대로 비교되지 않으므로 isMissing()으로 처리해야 합니다.
Re: 논리적 또는또는 사용하려는 경우 허용되는 매개 변수 목록이 증가하면 비교가 매우 길어지고 유지 관리하기가 짜증납니다. 그래서 !Contains 및 허용된 매개변수 목록(또는 연관 배열)을 사용합니다.
Names Default To Here(1);
myFunc = Function({myParameter},
{default local},
ok_parameters = {"Parameter1", "Parameter2"};
If(!Contains(ok_parameters, myParameter),
Return(Eval Insert("^myParameter^ not in list ^ok_parameters^"));
,
Return(Eval Insert("^myParameter^ in list ^ok_parameters^"));
);
);
output = myFunc("Parameter1");
Show(output);
output = myFunc("notParameter1");
Show(output);
그러나 또는/및 또한 사용할 수 있습니다. 아래는 한 가지 예입니다(|는 또는를 의미함).
Names Default To Here(1);
myFunc = Function({myParameter},
{default local},
If(!(myParameter == "Parameter1" | myParameter == "Parameter2"),
return(Eval Insert("output some msg"));
);
);
output = myFunc("Parameter1");
show(output);
output = myFunc ("notParameter1");
show(output);Re: 논리적 또는안녕 @네오 ,
문제는 "또는"논리 연산자를 호출하는 방법에 있을 수 있다고 생각합니다. JSL에서 논리 또는 이 문자는 | . 따라서 If() 문을 다음과 같이 변경하면 작동합니다.
Names Default To Here( 1 );
MyFunc = Function( {Myparam},
If(
(Myparam != parm1 | Myparam != parm2), Return( Eval Insert( "Output some msg" ) )
)
);논리는 그 둘 중 하나만이 참이어야 하며 결과를 반환한다는 점을 명심하십시오. Myparam이 그 중 하나와 같으면 여전히 메시지를 반환합니다.
도움이 되었기를 바랍니다!,
DS