Функции в 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). Её можно поставить в конец записи.