-3

Objective-cで次のことにどのようにアプローチしますか?

いくつかの条件をテストするメソッドを構築したいと思います。私が達成したいことを表現するためのいくつかの擬似コードの下:

if
   condition1 fulfilled, return 1
   condition2 fulfilled, return 2
   condition3 fulfilled, return 1
   condition4 fulfilled, return 1
   condition5 fulfilled, return 2
   no condition fulfilled, return 3 
end if
4

4 に答える 4

2

条件が相互に排他的であるかどうかに応じて、いくつかの考慮事項が適用される場合があります。

条件が相互に排他的である場合、最も簡単な解決策は、戻り値で条件をグループ化することです。

if (condition1 || condition3 || condition4) return 1;
if (condition2 || condition5) return 2;
return 3;

条件が相互に排他的でない場合は、テスト順序で隣り合っている条件のみをグループ化できます。

if (condition1) return 1;
if (condition2) return 2;
if (condition3 || condition4) return 1;
if (condition5) return 2;
return 3;

after a returnは必要ありませんが、 anywayelseを含むショップが一般的です。elseこれはコーディングの標準化の問題であり、コーディング チームが一緒に決定する必要があります。

より凝ったものにしたい場合は、ブロックの配列を作成し、条件を順番にテストし、ブロックによって返された値を返すことができます。これは、最もトリッキーなアプローチです。条件が同じように構造化されていない限り、読みやすさが著しく損なわれ、コードが読者にとって意味のあるものになります。のチェーンはif常に読み手に意味をなすので、読みやすさで競合するのは非常に困難です。

于 2013-02-25T21:49:27.920 に答える
0

良い答えが得られましたが、2 つの単一の値のみを比較したい場合は、次のようになります。

int variableToCompare = ...;
switch (variableToCompare) {
     case 1: NSLog(@"1"); break;
     case 2: NSLog(@"2"); break;
     case 3: NSLog(@"3"); break;
     default: NSLog(@"This will be executed if any of the conditions above are YES");
};
于 2013-02-25T21:52:51.900 に答える
0
if ( condition1 ) return 1;
else if ( condition 2 ) return 2;
else if ( condition 3 ) return 1;
.....
于 2013-02-25T21:44:02.253 に答える
0

これには、C ライクな言語とまったく同じ方法でアプローチします。

if (condition1) {
    return 1;
} else if (condition2) {
    return 2;
} else if ...

} else {
    return 3;
}
于 2013-02-25T21:44:30.627 に答える