Функции в Dart
1. Что такое функция?
В языке программирования Dart, функция (function) представляет собой именованный блок кода (block of code), который может принимать параметры и возвращать значение или возвращать значение и запускаться только при вызове. Функции разделяют большие задачи на мелкие части и выполняют определенные операции этой программы. Этот процесс повышает возможность повторного использования кода и расширяет модульный подход программы.
return_type function_name(arguments) {
// Statements
}
Примечание: Как и в JavaScript, Dart не допускает двух функций с одинаковым именем, даже если они имеют разные параметры.
2. Регулярная функция
Синтаксис для объявления обычной функции:
return_type function_name(data_type1 arg1, data_type2 arg2, data_typeN argN) {
// Statements
}
Используйте ключевое слово void (или пустой) в качестве типа возвращаемого значения, если функция ничего не возвращает.
void function_name(data_type1 arg1, data_type2 arg2, data_typeN argN) {
// Statements
}
// Same as:
function_name(data_type1 arg1, data_type2 arg2, data_typeN argN) {
// Statements
}
Например: Функция sum принимает два аргумента типа int и возвращает значение типа int.
function_ex1.dart
int sum(int a, int b) {
return a + b;
}
void main() {
var result = sum(100, 200); // 300
print('result = $result');
}
Например: Функция greeting принимает параметр типа String и ничего не возвращает.
function_ex2.dart
void greeting(String name) {
var s = 'Hello $name';
print(s);
}
void main() {
// Call the function:
greeting('Tom'); // Hello Tom
}
3. Closure (Закрытая сумка)
В языке программирования Dart, Closure (Закрытая сумка) - это специальная функция.
- Подобно функции, Closure представляет собой блок операторов с параметрами и может возвращать значение или ничего.
- В отличие от функции, closure не имеет имени. Однако вы можете идентифицировать его с помощью переменной.
Смотрите подробную статью о Closure:
4. Опциальный параметр
Как упоминалось выше, Dart не допускает функций с одинаковым именем, но функция может включать опциональные параметры, которые должны быть последними параметрами в списке параметров.
Синтаксис:
return_type function_name(typeM argM, typeN argN, [typeP? argP, typeQ? argQ]) {
// statement(s)
}
Или синтаксис - Опциональный параметр со значением по умолчанию:
return_type function_name(typeM argM, typeN argN,
[typeP? argP = defaultValueP, typeQ? argQ]) {
// statement(s)
}
Например:
function_optional_args_ex1.dart
String concat(String s1, String s2, [String? s3]) {
if (s3 != null) {
return s1 + s2 + s3;
}
return s1 + s2;
}
double sum(double v1, double v2, [double? v3, double? v4]) {
return v1 + v2 + (v3 ?? 0) + (v4 ?? 0);
}
void main() {
String result1 = concat('One', 'Two');
print('result1: $result1');
String result2 = concat('One', 'Two', 'Three');
print('result2: $result2');
double value1 = sum(1, 2, 3, 4);
print('value1: $value1');
double value2 = sum(1, 2, 3);
print('value2: $value2');
double value3 = sum(1, 2);
print('value3: $value3');
}
Output:
result1: OneTwo
result2: OneTwoThree
value1: 10.0
value2: 6.0
value3: 3.0
5. Опциональные именованный параметр
Опциальные именованные параметры (Optional Named Parameters) - это параметры, заключенные в фигурные скобки {} и помещенные в конец списка параметров функции. Все эти параметры имеют значения по умолчанию.
Синтаксис:
return_type function_name(typeM argM, typeN argN,
{typeP argP = defaultValueP, typeQ argQ = defaultValueQ}){
// statement(s)
}
Например:
function_optional_named_args_ex1.dart
String concatAndTrim(String s1, String s2, {bool trimLeft = true, bool trimRight = true}) {
var s = s1 + s2;
if (trimLeft && trimRight) {
return s.trim();
} else if (trimLeft) {
return s.trimLeft();
} else if (trimRight) {
return s.trimRight();
}
return s;
}
void main() {
var s1 = ' One ';
var s2 = ' Two ';
var result1 = concatAndTrim(s1, s2); // trim left and right
print('result1: -->$result1<-- (Trim left and right)');
var result2 = concatAndTrim(s1, s2, trimLeft: false); // trim right only
print('result2: -->$result2<-- (Trim right only)');
var result3 = concatAndTrim(s1, s2, trimRight: false); // trim left only
print('result3: -->$result3<-- (Trim left only)' );
var result4 =
concatAndTrim(s1, s2, trimLeft: false, trimRight: false); // no trim
print('result4: -->$result4<!-- (No Trim)');
}
Output:
result1: -->One Two<-- (Trim left and right)
result2: --> One Two<-- (Trim right only)
result3: -->One Two <-- (Trim left only)
result4: --> One Two <!-- (No Trim)
Pуководства Dart
- Тип данных Boolean в Dart
- Функции в Dart
- Замыкания (Closure) в Dart
- Методы в Dart
- Свойства в Dart
- Оператор точка-точка (..) в Dart
- Программирование Dart с помощью онлайн-инструмента DartPad
- Установите Dart SDK в Windows
- Установите Visual Studio Code в Windows
- Установите Dart Code Extension для Visual Studio Code
- Установите Dart Plugin для Android Studio
- Запустите свой первый пример Dart в Visual Studio Code
- Запустите свой первый пример Dart в Android Studio
- Dart JSON với thư viện dart:convert
- Руководство Dart List
- Переменные в Dart
- Руководство Dart Map
- Циклы в Dart
Show More