Я думаю, что необходимо редко быть нужен тег br в шаблонах. Но время от времени это может требоваться в содержании, пользователь генерировал и генерируемый системой. Как то, если Вы хотите сохранить часть текста в абзаце, но нуждаться в новой строке перед ним.
, Каковы случаи, где Вы чувствуете, Вы вынуждены использовать теги br?
Это так в Java, потому что это так в C.
Теперь вопрос, почему это так в C, потому что когда & и && стали другими операторов (когда-то предшествовавших происхождению C от B), разнообразие операторов & = было просто упущено.
Но во второй части моего ответа нет источников, подтверждающих это.
Одна из исходных целей Java заключалась в том, чтобы быть «Простым, объектно-ориентированным и знакомым». Применительно к этому случаю & = знакомо (у C, C ++ он есть, и в этом контексте слово «знакомый» означает знакомый для кого-то, кто знает эти два).
&& = не было бы знакомо, и это было бы непросто в ощущение, что разработчики языка не пытались продумать каждый оператор, который они могли бы добавить к языку, поэтому меньше дополнительных операторов проще.
Вероятно, потому что что-то вроде
x = false;
x &&= someComplexExpression();
выглядит так, как будто оно должно быть присвоено x
и вычислено someComplexExpression ()
, но тот факт, что оценка зависит от значение x
не очевидно из синтаксиса.
Также потому, что синтаксис Java основан на C, и никто не видел острой необходимости добавлять эти операторы. В любом случае, вам, вероятно, будет лучше с оператором if.
« &
» и « &&
» не то же самое, что « &&
» - это сокращенная операция, которая будет не делать, если первый операнд ложный, в то время как ' &
' будет делать это в любом случае (работает как с числом, так и с логическим).
Я согласен с тем, что существование имеет больше смысла, но не так уж плохо если его там нет. Думаю, его там не было, потому что его нет в C.
На самом деле не могу понять, почему.
Это разрешено в Ruby.
Если бы я догадался, я бы сказал, что он не часто используется, поэтому не был реализован. Другое объяснение может заключаться в том, что парсер смотрит только на символ до =
Я не могу придумать лучшей причины, чем «Это выглядит невероятно уродливо!»
a & b и a && b - это не одно и то же.
a && b - это логическое выражение, которое возвращает логическое значение, а a & b - побитовое выражение, возвращающее int (если a и b - это целые числа).
Как вы думаете, где они одинаковые?
Во многом потому, что синтаксис Java основан на C (или, по крайней мере, на семействе C), а в C все эти операторы присваивания компилируются в арифметические или побитовые инструкции сборки в одном регистре. Версия с оператором присваивания избегает временных затрат и, возможно, позволила создать более эффективный код на ранних неоптимизирующих компиляторах. Эквиваленты логических операторов (как их называют в C) ( && =
и || =
) не имеют такого очевидного соответствия одиночным инструкциям сборки; они обычно расширяются до тестовой и переходной последовательности инструкций.
Интересно, что в таких языках, как ruby , есть || = и && =.
Изменить: терминология в Java и C различается