2012-05-03 2 views
2

У меня есть небольшая проблема: D Я не могу найти правильные слова для поиска, поэтому я написал этот вопрос. как я получу это короче? Я знаю с этой логикой || но как я мог добавить более 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: содержит:' вещь? Это ужасное имя метода; почему бы просто не использовать существующие строковые методы напрямую? – 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 утверждений? – John

+0

@ Джон: Я не уверен, что вы просите. Вы хотите что-то вроде 'if (..." Input ") xxx else if (..." Output) 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) 
{ 
} 

То, что вы используете, «если это условие, то проверить это условие, и это условие», и т.д. . Вы можете объединить их с логическим И, обозначенным &&.

+0

Разве это не напрасно? если первое ложно, вам не нужно проверять следующие случаи. Когда первое условие выходит из строя (x && y && z), то остальные не будут проверяться и сохраняются два этапа операций. –

+1

@ D3mon-1stVFW. Это правда, в таком виде производительности необходимо, тогда решение Джерри лучше. Сначала я бы написал код для чтения. – vcsjones

+0

Точно. Я бы написал это так раньше, и в необычном случае это окажется узким местом производительности, перепишем без переменных. – Elland

Смежные вопросы