Я сейчас изучаю Google Dart. В настоящее время я запутался, пытаясь понять, что происходит в этом фрагменте кода, взятом из dart docs:
Function makeAdder(num addBy) {
return (num i) => addBy + i;
}
void main() {
// Create a function that adds 2.
var add2 = makeAdder(2);
// Create a function that adds 4.
var add4 = makeAdder(4);
assert(add2(3) == 5);
assert(add4(3) == 7);
}
Что мне так трудно понять, так это части add2(3)
и add(3)
. makeAdder(2)
и makeAdder(4)
из того, что я собрал, присваивает переменную addBy
2 и 4 соответственно в их собственной области видимости. Таким образом, переменная add2 имеет 2, назначенные для addBy, а переменная add4 имеет 4, назначенные для addBy. Но я не совсем понимаю: при выполнении функции с параметрами (т. Е. add2(3)
и add4(3)
) параметры не должны присваивать переменную addBy
, поэтому addBy
должны быть равны 3 соответственно переменные? и как Дарт знает, как назначить i 3 вместо addBy?
Надеюсь, в этом есть смысл.