Cómo usar use 'no es igual a' con lógico oen un Si declaración que me gustaría hacer Si miparámetro no es igual a Parámetro1 o Parámetro2 y luego devuelve algo.Pero mi siguiente función no funciona como se esperaba.,. ¿Dónde me estoy equivocando?
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");
secuencias de comandosRe: Cómo usar use 'no igual a' con lógica oProbablemente te refieres a esto (que me gusta más)
if ( (myParameter != Parameter1) & (myParameter != Parameter2) , ...
que es lo mismo que esto
if( ! ( (myParameter == Parameter1) | (myParameter == Parameter2) ), ...
o, la forma en que estaba usando la función or(), igual que esto
if( !or(myParameter==Parameter1, myParameter==Parameter2), ...
https://en.wikipedia.org/wiki/De_Morgan%27s_laws
Además, si faltan valores, asegúrese de manejarlos con isMissing() porque no se comparan como cabría esperar.
Re: Cómo usar use 'no igual a' con lógica oSi desea usar O, la comparación se volverá muy larga y molesta de mantener si aumenta la lista de parámetros permitidos. Entonces usaría !Contains y una lista de parámetros permitidos (o matriz asociativa):
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);
Pero puede usar o/y también, a continuación hay un ejemplo (| significa o):
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: Cómo usar use 'no igual a' con lógica oHola @Neo ,
Creo que el problema podría estar en cómo llamas al operador lógico "o". En JSL, el o lógico es este carácter | . Entonces, cambiaría la declaración If() a algo como lo siguiente, debería funcionar:
Names Default To Here( 1 );
MyFunc = Function( {Myparam},
If(
(Myparam != parm1 | Myparam != parm2), Return( Eval Insert( "Output some msg" ) )
)
);Tenga en cuenta que el lógico solo requiere que uno de esos dos sea verdadero y devolverá el resultado. Si Myparam es igual a uno de esos, aún devolverá el mensaje.
¡Espero que esto ayude!,
SD