169 похожих чатов

Кстати у меня вопрос. Почему не работает проверки типо if

(someProperty != null) {
someProperty.foo; // тут опять надо ставить оператор !
}
Дарт же не поддержтвает многопоточность. Почему он не может гарантировать что в этом месте переменная не изменится?

8 ответов

22 просмотра

Если переменная может меняться (берется из стейта например) то все равно потребует !

я думал что он работает в одном потоке, а многопоточка достигается за счет изолятов

Yurij-horssyyy Автор вопроса
Dart Mitai
я думал что он работает в одном потоке, а многопот...

Ну так и есть. Поэтому вопрос что ему мешает гарантироавть в простых случаях что переменная не изменится. Например нет никаких await. Или что-то еще может прервать волшебным образом выполнение?

потому что это может быть переопределенный геттер, который каждый раз возвращает разное значение.

потому что someProperty это глобальная переменная. Есть вероятность что на момент проверки на null(в if'e) переменная будет не null, а на следующей строке, при обращении к той же переменной, она уже будет null. Поэтому этот трюк с проверкой на null работает только с локальными переменными. Например, можно значение глобальной переменной записать в локальную: final _someProperty = someProperty; if (_someProperty != null) { _someProperty.foo; // будет ок, потому что _someProperty локальная переменная }

Radomir Epur
потому что someProperty это глобальная переменная....

нет, дело не в области видимости, а в возможности переопределить свойство класса

https://dart.dev/tools/non-promotion-reasons

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта