Что это за одинарный постфикс в дартс / флаттер? - PullRequest
0 голосов
/ 03 июля 2018

я видел этот унарный постфикс в коде дротика / флаттера: ?.

как это:

videoController?.dispose();

и я хочу знать, как это работает ...

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Это оператор с нулевым значением оператор . Это краткая форма следующего.

Код

 ((obj) => obj == null ? null : x.method())(object)
 // is equal to
 object?.method()

Вы можете узнать больше о нуль-знающих операторах здесь .

Объяснение

Читается как:

  • Выполнить method только если object не null

  • Если object равно null, вернуть null (в противном случае оценка из method)

0 голосов
/ 03 июля 2018

Это отличная возможность в Dart

значение равно тогда и только тогда, когда этот объект не равен нулю, в противном случае возвращает ноль .

Простой пример:

void main() {
  Person p1 = new Person("Joe");
  print(p1?.getName); // Joe

  Person p2;
  print(p2?.getName); // null

  //print(p2.getName); // this will give you an error because you cannot invoke a method or getter from a null
}

class Person {
  Person(this.name);
  String name;

  String get getName => name;
}

Есть и другие классные операторы, поддерживающие нуль, такие как ??. Прочтите мой QnA , чтобы узнать больше об операторах, распознающих нуль.

0 голосов
/ 03 июля 2018

Тест на ноль,

https://www.dartlang.org/guides/language/language-tour

"?. Условный доступ к элементу Like., Но самый левый операнд может быть нулевым; пример: foo? .Bar выбирает панель свойств из выражения foo, если только foo не равно нулю (в этом случае значение foo? .Bar равно нулю) «

...