В этом уроке мы познакомимся с чудесным миром функций. Функции — это объекты в Dart, их можно назначать переменным и передавать другим функциям.
Реализация функции
Существует несколько способов реализации функции:
1. returnAString(string){ return string; } 2. int squareNumber(int number){ return number * number; } 3. int squareNumber(int number) => number * number;
- Функция без возвращаемых типов, например
int,
String,
bool
и т. д. - Функция с возвращаемыми типами.
- Функция с сокращенным синтаксисом. Если функция имеет одно выражение, мы можем использовать сокращенный синтаксис.
2
и3
эквивалентны.
Параметры функции
Функции могут иметь обязательные и необязательные параметры — именно в таком порядке. Необязательные параметры могут быть именованными или позиционными, но не оба!
1.void applyCSS({String backgroundColor, bool displayGrid}) {...}
2.applyCSS(backgroundColor: yellow, displayGrid: true);
3.const Scrollbar({Key key, @required Widget child})
- Реализация функции с требуемыми параметрами.
- Вызов
applyCSS()
с именованными параметрами.paramName: value
- Именованные параметры необязательны. Мы можем добавить
@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.
- Позиционные параметры могут быть помещены внутри [] внутри реализации. Когда мы вызываем функцию, мы можем предоставить или опустить значение.
- Вызов функции
say()
без дополнительного параметра. - Вызов функции
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.
- Установка параметров позиционирования по умолчанию.
- Списки или карты могут передаваться как значения по умолчанию. Здесь у нас есть список по умолчанию для параметра
list
и карта по умолчанию для параметраgifts
.
Функция void main()
1. void main(List<String>){}
void main()
— необходимая функция верхнего уровня. Это точка входа в приложение Dart и имеет необязательный параметрList<String>
для аргументов, передаваемых в командной строке.
Функции — один из краеугольных камней управления сложностью программы. Я рекомендую вам стремиться к мастерству в этой области. Хотя это руководство является лишь поверхностным описанием функций, вы можете присоединиться ко мне в Части 6, где я расскажу о функциях более подробно.
Помогите мне помочь другим, нажав на кнопку аплодисментов и оставив отзыв.