В этом уроке мы познакомимся с чудесным миром функций. Функции — это объекты в Dart, их можно назначать переменным и передавать другим функциям.

Реализация функции

Существует несколько способов реализации функции:

1.   returnAString(string){
return string;
     }
2.   int squareNumber(int number){
return number * number;
}
3.   int squareNumber(int number) => number * number;
  1. Функция без возвращаемых типов, например int, String, bool и т. д.
  2. Функция с возвращаемыми типами.
  3. Функция с сокращенным синтаксисом. Если функция имеет одно выражение, мы можем использовать сокращенный синтаксис. 2 и 3 эквивалентны.

Параметры функции

Функции могут иметь обязательные и необязательные параметры — именно в таком порядке. Необязательные параметры могут быть именованными или позиционными, но не оба!

1.   void applyCSS({String backgroundColor, bool displayGrid}) {...}
2.   applyCSS(backgroundColor: yellow, displayGrid: true);
3.   const Scrollbar({Key key, @required Widget child})
  1. Реализация функции с требуемыми параметрами.
  2. Вызов applyCSS() с именованными параметрами. paramName: value
  3. Именованные параметры необязательны. Мы можем добавить @required, чтобы заставить пользователей предоставлять значения. Для этой функции требуется библиотекаpackage:meta/meta.dart.

Позиционные параметры

1.   String say(String from, String msg, [String device]) {
        var result = '$from says $msg';
        if (device != null) {
           result = '$result with a $device';
        }
     return result;
     }
2.   say('Bob', 'Howdy');
3.   say('Bob', 'Howdy', 'smoke signal')
Note: Code taken from Dart Docs.
  1. Позиционные параметры могут быть помещены внутри [] внутри реализации. Когда мы вызываем функцию, мы можем предоставить или опустить значение.
  2. Вызов функции say() без дополнительного параметра.
  3. Вызов функции say() с необязательным параметром.

Значения параметров по умолчанию

Именованные и позиционные параметры могут иметь значения по умолчанию, постоянные значения времени компиляции с использованием =. null — это значение по умолчанию, если значение не указано.

/// Sets the [bold] and [hidden] flags ...
void enableFlags({bool bold = false, bool hidden = false}) {...}
// bold will be true; hidden will be false.
enableFlags(bold: true);
Note: Code taken from Dart Docs.

Значения позиционного параметра по умолчанию

1.   String say(String from, String msg,
    [String device = 'carrier pigeon', String mood]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  if (mood != null) {
    result = '$result (in a $mood mood)';
  }
  return result;
}
2.   void doStuff(
    {List<int> list = const [1, 2, 3],
    Map<String, String> gifts = const {
      'first': 'paper',
      'second': 'cotton',
      'third': 'leather'
    }}) {
  print('list:  $list');
  print('gifts: $gifts');
}
Note: Code taken from Dart Docs.
  1. Установка параметров позиционирования по умолчанию.
  2. Списки или карты могут передаваться как значения по умолчанию. Здесь у нас есть список по умолчанию для параметра list и карта по умолчанию для параметра gifts.

Функция void main()

1.   void main(List<String>){}
  1. void main() — необходимая функция верхнего уровня. Это точка входа в приложение Dart и имеет необязательный параметр List<String> для аргументов, передаваемых в командной строке.

Функции — один из краеугольных камней управления сложностью программы. Я рекомендую вам стремиться к мастерству в этой области. Хотя это руководство является лишь поверхностным описанием функций, вы можете присоединиться ко мне в Части 6, где я расскажу о функциях более подробно.

Помогите мне помочь другим, нажав на кнопку аплодисментов и оставив отзыв.