Что такое "?." оператор в трепетании - PullRequest
0 голосов
/ 19 февраля 2020

Я пользуюсь библиотекой и во многих местах? оператор используется, я не могу понять его цель.

Timer _debounceTimer;
  @override
  initState() {
    _textController.addListener(() {
      // We debounce the listener as sometimes the caret position is updated after the listener
      // this assures us we get an accurate caret position.
      if (_debounceTimer?.isActive ?? false) _debounceTimer.cancel();

1 Ответ

0 голосов
/ 19 февраля 2020

?. [Условный доступ к элементу] - Как и ., но самый левый операнд может быть null; пример: foo?.bar выбирает свойство bar из выражения foo, если foo не равно null (в этом случае значение foo?.bar равно нулю)

из Dart Языковой тур (другие операторы)

TLDR: он просто проверяет null перед тем, как получить доступ к члену. Если левая часть оператора не равна нулю, тогда он работает просто как ., а если это значение null, то все это равно null.

В вашем примере: _debounceTimer?.isActive - если _debounceTimer равно нулю, тогда _debounceTimer?.isActive <-> null, а если _debounceTimer не равно нулю, то _debounceTimer?.isActive <-> _debounceTimer.isActive.

Также проверьте: Dart Language tour ( Условные выражения) для ?? и ? оператора.

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