如何将“不等于”与逻辑或一起使用在一个如果我想做的声明如果我的参数不相等到 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");
脚本回复:如何将“不等于”与逻辑或一起使用你可能是这个意思(我最喜欢这个)
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() 处理它们,因为它们不会像您预期的那样进行比较。
回复:如何将“不等于”与逻辑或一起使用如果您想使用 或者如果允许的参数列表增加,则比较将变得很长并且维护起来很烦人。 所以我会使用 !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);
但是您可以使用 or/and,下面是一个示例(| 表示或):
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);回复:如何将“不等于”与逻辑或一起使用你好@Neo ,
我认为问题可能在于您如何调用“或”逻辑运算符。 在 JSL 中,逻辑或就是这个字符 | . 因此,您可以将 If() 语句更改为以下内容,它应该可以工作:
Names Default To Here( 1 );
MyFunc = Function( {Myparam},
If(
(Myparam != parm1 | Myparam != parm2), Return( Eval Insert( "Output some msg" ) )
)
);请记住,逻辑只要求这两者之一为真,它将返回结果。 如果 Myparam 等于其中之一,那么它仍然会返回消息。
希望这可以帮助!,
DS