У меня есть небольшая проблема с объективом c и условиями. Как мы можем показать, что на 6 условиях, которые я даю как минимум 3, нужно проверить как правильные?Несколько условий в объекте C
Спасибо за ваш ответ!
У меня есть небольшая проблема с объективом c и условиями. Как мы можем показать, что на 6 условиях, которые я даю как минимум 3, нужно проверить как правильные?Несколько условий в объекте C
Спасибо за ваш ответ!
int counter = 0;
if (condition1) counter++;
if (condition2) counter++;
if (condition3) counter++;
if (condition4) counter++;
if (condition5) counter++;
if (condition6) counter++;
if (counter >= 3) {
// something
}
Вы можете сделать это, как:
int validated=0;
if(condition1){
validated++;
}
if(condition2){
validated++;
}
if(condition3){
validated++;
}
if(condition4){
validated++;
}
if(condition5){
validated++;
}
if(condition6){
validated++;
}
if(validated>=3){
//do your stuffs
}
+1 за бытие :) – DrummerB
Вы могли бы попытаться считать правильные условия:
псевдо-код:
int counter = 0;
if(A) counter++;
if(B) counter++;
if(C) counter++;
if(D) counter++;
if(E) counter++;
if(F) counter++;
if(counter >= 3){
//do stuff here
}
counter = 0;
'== true'? Да? –
geez, вы, ребята, быстры. – adamup
может быть, если (! (A == true) == 0) –
В дополнение к ответам уже дал , вот более гибкое решение для переменного количества условий:
int conditions[6] = {condition1, condition2, condition3,
condition4, condition5, condition6};
int counter = 0;
for (int i = 0; i < sizeof(conditions)/sizeof(int); i++) {
counter += conditions[i]; // Assuming your conditions are 0 or 1.
}
if (counter >= 3) {
// do something
}
New эксперименты :) –
Вы можете оптимизировать этот код внутри цикла, 'if (counter == 3) break;': D –
@interface Conditions
@property (nonatomic, strong) NSMutableArray *conditions;
- (void) addCondition: (Condition*) theCondition;
- (NSInteger) count;
- (NSInteger) satisfying: (void (^block)(Condition*) );
@end
Оберните список условий в объекте. Когда вам нужно знать, если три условия:
if ([self.conditions satisfying: ^(Condition *c){ return [c isSatisfied]; })>3) {...};
Это массовое убийство - возможно нелепое излишество - если это одноразовый проект. Но если долгосрочное обслуживание является проблемой, это отделяет условие от деталей реализации. Вы избегаете длинного списка условностей. Вы можете легко добавлять или изменять условия, и если их логика усложняется, у вас есть хороший объектно-ориентированный интерфейс для решения этой проблемы. (Условие - это, вероятно, протокол, работающий как фасад, а не объект).
получил меня на 5 секунд –
Большое спасибо за оперативную и совершенную помощь – user2187565