2015-01-01 3 views
-4

Учитывая следующий код:Использование & = on boolean с начальным значением false?

var bolValue = true; //or bool bolValue if in C# 
bolValue &= someBooleanExpression; 
bolValue &= anotherBooleanExpression; 
.... 

Конечный результат bolValue является истинным или ложным, и каждое выражение вычисляется только если значение bolValue верно, когда эта строка кода выполняется. Для этого необходимо, чтобы начальное значение bolValue было равно.

Как это можно было бы переписать, чтобы дать начальное значение false и позволить ему проходить через каждое выражение, только если значение bolValue является ложным перед каждым & = оценка?

+1

Какую цель вы ставите перед собой? «False» и «НИЧЕГО» всегда «ложны». Другими словами, если вы начинаете с «False», тогда нет необходимости оценивать какие-либо другие операторы '& ='. –

+0

Бесполезно инициализировать 'bolValue'' false', а затем использовать '& =' на нем. Независимо от того, какое из этих выражений оценивается (либо «истина», либо «ложь»), в конце «bolValue» всегда будет «false». – Alexandru

+0

Пожалуйста, постарайтесь повторить свой вопрос, поскольку это не имеет никакого смысла. – Alexandru

ответ

0

Оператор & = должен использоваться для бит-масок, а не для булевых переменных. что-то вроде

char flags = 0x4fee; 
char A_mask = 0x0001; 
flags &= A_mask; // <=> flags = flags & mask;(bitwise AND here) 

Так что не использовать его для булевых, как это не для них.

Для булевых вы можете использовать, что один:

var result = condition1 && condition2 && condition3 && condition4 ... ;

+0

Логические операторы работают с булевыми. Http://msdn.microsoft.com/en-us/library/aa691309(v=vs.71) .aspx –

+0

@RufusL: '& =' не является логическим оператором в Javascript. – Guffa

+0

@RufusL Почему вы публикуете ссылку для C#, когда он задал вопрос для javascript. – Alexandru

-1

То, что я думаю, что вы должны сделать, это:

var boolValue = Expr1 || Expr2 || ... 

Из short-circuit evaluation, если он находит выражение, которое истинно, он перестанет оценивать другие выражения и присваивает true переменной, иначе она будет оценивать следующее выражение и так далее.

+1

Это не ответьте на вопрос. – Guffa

+0

@Guffa я думаю. «Как это было бы переписано, чтобы позволить начальное значение false и позволять ему проходить через каждое выражение, только если значение bolValue ложно». Это делает именно то, что он просил. – Alexandru

+0

Нет, это не так, потому что это невозможно. – Guffa

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