Comment utiliser « différent de » avec un ou logiqueDans un si déclaration que je voudrais faire si monParamètre n'est pas égal à Parameter1 ou Parameter2 puis renvoie quelque chose.Mais ma fonction suivante ne fonctionne pas comme prévu.,. Où est-ce que je me trompe
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");<BR />output = myFunc ("notParameter1");<BR />
Modélisation statistique avancéeÉtudes de consommation et de marchéRe : Comment utiliser "différent de" avec un ou logiqueSalut @Néo ,
Je pense que le problème pourrait résider dans la façon dont vous appelez l'opérateur logique "ou". En JSL, le ou logique est-ce que ce caractère | . Donc, vous changeriez l'instruction If() en quelque chose comme ce qui suit, cela devrait fonctionner :
Names Default To Here( 1 );
MyFunc = Function( {Myparam},
If(
(Myparam != parm1 | Myparam != parm2), Return( Eval Insert( "Output some msg" ) )
)
);Gardez à l’esprit que la logique nécessite seulement que l’un de ces deux soit vrai et elle renverra le résultat. Si Myparam est égal à l'un de ceux-ci, il renverra quand même le message.
J'espère que cela t'aides!,
DS
Re : Comment utiliser "différent de" avec un ou logiqueSi vous souhaitez utiliser Or, la comparaison deviendra très longue et fastidieuse à maintenir si la liste des paramètres autorisés augmente. J'utiliserais donc !Contains et la liste des paramètres autorisés (ou tableau associatif) :
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);
Mais vous pouvez utiliser ou/et aussi, voici un exemple (| signifie ou) :
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 : Comment utiliser "différent de" avec un ou logiqueTu veux probablement dire ceci (ce que j'aime le plus)
if ( (myParameter != Parameter1) & (myParameter != Parameter2) , ...
ce qui est la même chose que ça
if( ! ( (myParameter == Parameter1) | (myParameter == Parameter2) ), ...
ou, la façon dont vous utilisiez la fonction or(), la même chose que ceci
if( !or(myParameter==Parameter1, myParameter==Parameter2), ...
https://en.wikipedia.org/wiki/De_Morgan%27s_laws
De plus, s'il manque des valeurs, assurez-vous de les gérer avec isMissing() car elles ne se comparent pas comme vous pourriez vous y attendre.