2012-05-03 6 views
2

私は少し問題があります:D 私はこの質問を書いたので、私は検索のための適切な単語を見つけることができません。 これをもっと短くするには?私はこの論理で知っている||しかし、私は1行に1つ以上を追加することができますか?おそらく時間のため おかげ 敬具 ジョンこれらのif条件のネストを減らすにはどうすればよいですか?

bool b = [self NSStringContains:convert contains:@"Input"]; 
    if (b ==true) 
    { 
      bool b = [self NSStringContains:convert contains:@"Output"]; 
      if (b ==true) 
      { 
        bool b = [self NSStringContains:convert contains:@"statecheck"]; 
        if (b ==true) 
        { 
        .... 
        } 
      } 
    } 
+3

この「NSStringContains:contains:」は何ですか?それはひどいメソッド名です。既存の文字列メソッドを直接使用するだけではどうですか? – bbum

答えて

6

、あなたが&&を必要とするように見える:

if ([self NSStringContains:convert contains:@"Input"] && 
    [self NSStringContains:convert contains:@"Output"] && 
    [self NSStringContains:convert contains:@"statecheck"]) 
{ 
    ... 
} 

何が価値があるために、bool b;与えられ、if (b==true)は常に冗長である - ちょうどif (b)を使用しています。

+0

この3つのステートメントのうちの1つの条件だけが適切でなければなりません。 – John

+0

@ジョン:あなたが何を求めているのかは分かりません。もしあなたが '' if(... "input")xxx else if(... "出力)yyy else if(..." statecheck ")zzz;'のようなものが欲しいということですか? –

2

このような何か:

bool hasInput = [self NSStringContains:convert contains:@"Input"]; 
bool hasOutput = [self NSStringContains:convert contains:@"Output"]; 
bool hasStatecheck = [self NSStringContains:convert contains:@"statecheck"]; 
if (hasInput && hasOutput && hasStatecheck) 
{ 
} 

あなたが使用している何を、「この条件ならば、この条件、およびこの条件を確認する」などこれらを論理ANDでまとめると、&&と表記されます。この場合

+0

それはステップを無駄にしていませんか?最初のものが偽であれば、次のケースを確認する必要はありません。最初の条件が(x && y && z)で失敗すると残りはチェックされずに2つの操作ステップが保存されます –

+1

@ D3mon-1stVFWそのようなパフォーマンスが必要な場合はJerryのソリューションが必要です。私は最初に読めるようにコードを書いています。 – vcsjones

+0

正確です。私はこれを以前のように書くつもりで、これがパフォーマンスのボトルネックであることが判明した異常なケースでは、変数なしで書き直します。 – Elland

関連する問題