#flutter #dart #local-functions
#flutter #dart #local-функции
Вопрос:
// OK, it works!
void global_1() => global_2();
void global_2() => global_1();
void main() {
// ERROR Local variable 'local_2' can't be referenced before it is declared.
void local_1() => local_2(); // <=== ERROR
void local_2() => local_1();
}
Компилятор сказал, что «Локальная переменная не может быть ссылкой до ее объявления»
Но почему глобальные функции могут вызывать друг друга рекурсивно, а локальные функции — нет?
Мне нужно знать, ПОЧЕМУ и несколько хороших обходных путей для этой ситуации.
Комментарии:
1. Вы могли бы обойти это, выполнив:
void Function() local_2; void local_1() => local_2(); local_2 = () => local_1();
2. Для меня это нормально компилируется. скрипка
3. @PedroPerez Но ваша скрипка на C #, я сказал о dart
Ответ №1:
Я подозреваю, что это зависит от области видимости. global_1
может вызывать global_2
, потому что они оба действительны в течение всего приложения. Но local_2
не существует до тех пор, пока он не будет объявлен, то есть после его использования.