論理和で「等しくない」を使用する方法でもしもやりたい発言もしも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");<BR />output = myFunc ("notParameter1");<BR />
スクリプティングRe: 論理和で「等しくない」を使用する方法やあ@ネオ、
問題は、「または」論理演算子の呼び出し方法にあると思います。 JSL では、論理 or はこの文字 | です。 . したがって、If() ステートメントを次のように変更すると、機能するはずです。
Names Default To Here( 1 );
MyFunc = Function( {Myparam},
If(
(Myparam != parm1 | Myparam != parm2), Return( Eval Insert( "Output some msg" ) )
)
);論理では、これら 2 つのうちの 1 つだけが true である必要があり、結果が返されることに注意してください。 Myparam がそれらのいずれかに等しい場合でも、メッセージが返されます。
お役に立てれば!、
DS
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);
ただし、or/and を使用することもできます。以下は一例です (| は or を意味します)。
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: 論理和で「等しくない」を使用する方法あなたはおそらくこれを意味します(私はこれが一番好きです)
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() で処理してください。