Проблема необязательности фигурных скобок в Dart
Несмотря на то, что Dart допускает сокращения с фигурными скобками, так лучше не делать: это источник трудноуловимых ошибок.
Пусть, к примеру, есть следующий код:
var val = 3;
if (val > 0)
print(val);
Пусть теперь мы решили в том случае, если условие выполняется, сделать еще и второй вывод:
var val = 3;
if (val > 0)
print(val);
print("Y");
Однако без фигурных скобок внутри условия находится только первый вывод. Он сработает при верном условии, а второй - всегда.
Фактически наш код эквивалентен такому:
var val = 3;
if (val > 0) {
print(val);
}
print("Y"); // эта строка оказалась снаружи условия
А мы бы хотели такой код:
var val = 3;
if (val > 0) {
print(val);
print("Y"); // эта строка внутри условия
}
Именно поэтому рекомендуется всегда выполнять расстановку фигурных скобок, чтобы не попадать в такого рода ошибки. В остальных уроках фигурные скобки пишем.
Не запуская код, определите, что выведется:
var val = 5;
if (val == 5)
print(val);
print("Y");
Не запуская код, определите, что выведется:
var val = 0;
if (val == 5)
print(val);
print("Y");
Не запуская код, определите, что выведется:
var val = 0;
if (val == 5)
print(val);
print("N");
print("Y");