Pull to refresh

Comments 6

Хорошая статья Валерий. Как раз разбирал Stream в dart2. Единственное что в dart лямда-функция в терменалогии dart документации не встречается. Это понятие там ближе к стрелочным функциям.

Спасибо. Это перевод, к сожалению, автор прекратил публиковать серию.
По поводу же lambda, вот выжимка из официального Language Tour:


Most functions are named, such as main() or printElement(). You can also create a nameless function called an anonymous function, or sometimes a lambda or closure. You might assign an anonymous function to a variable so that, for example, you can add or remove it from a collection.

С этим термином изначально в программировании путаница. Кондовые математики конечно порвут рубаху за чистоту терминов, но в реальности lambda function, anonymous function, как-то стали означать одно и то же.

У меня вопрос — обязательно ли отменять подписку? Действительно ли возможна утечка памяти? Или это просто «исторически сложилось»?
Линтер ругается, если ты не закрыл стримконтроллер, но не выкидывает никаких варнингов, если сделал listen и не отменил подписку.

По мне так хорошим стилем будет всегда делать стриму cancel. В реальной жизни может оказаться, что поток, к примеру, управляет какими-то IO ресурсами, которые не вредно бы вовремя освободить. Делая завершение потока неизменным правилом, можно приобрести хорошую привычку.
Вот тут и тут можно почитать размышления на эту тему.

Я спросил не про завершение стрима (это само собой), а про отмену подписки на него.

Вот как раз по первой ссылке в моем ответе рассуждения и про отмену подписки тоже. Вкратце — все должно случаться само собою, но в ряде случаев в зависимости от архитектуры приложения может случаться ситуация подвешивания незакрытых ресурсов (типа файлов, других IO-потоков).
Поэтому я лично для себя всегда стараюсь закрывать, если это как-то связано с ресурсами. В простяцких случаях — нет, если не ругается линтер (все линтер-предупреждения я устраняю для верности).

Only those users with full accounts are able to leave comments. Log in, please.