Функции в dart

обновлено: 08.12.2020

В Dart функции являются объектами и имеют тип Function.  Это означает, что функции могут быть присвоены переменным или переданы в качестве аргументов другим функциям

Функция присваивается переменной:


main() {
  var f = (String s) => print(s);
  f("hello world");
}

Функция может передаваться как параметр:


main() {
   var function;
   function = (String s) => print(s);
   doWork(function);
}

doWork(f(String s)) {
   f("hello world");
}

Краткая запись функции в одну строку через =>:


void main() {
  print(getMessage());
  printMessage('привет');
}

getMessage() => 'hello';
getMessage2() {
  return 'hello';
}

printMessage(message) => print(message);
printMessage2(message) {
  print(message);
}

Анонимные функции:


var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
  print('${list.indexOf(item)}: $item');
});

Каскадная запись (..)

Позволяет выполнять последовательность операций с одним и тем же объектом. Доступ к функциям и к полям. Это избавляет от необходимости писать временную переменную, тем самым код получается короче:


class Square {
  num a;
  num b;
  Scquare() {
    a = 0;
    b = 0;
  }
  
  calc() {
    num square = a*b;
    print ('square is $square');
  }
}

void main() {
  Square()..a=2..b=3..calc();
  
  //тоже самое, но в 4 строки
  Square square = Square();
  square.a = 2;
  square.b = 3;
  square.calc();
}

Примечание: нельзя построить каскадную запись, чтоб в центре была функция, которая ничего не возвращает (void). Её можно поставить в конец записи.

Рубрика: dart

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *