Нет реальной разницы между объявлением параметра функции с типом функции, предшествующим имени (void Function(String) fun
), или в виде (С-подобного) функционально-подобного синтаксиса, где имя находится в середине (void fun(String element)
),Оба объявляют аргумент с именем fun
с типом void Function(String)
.
У Dart изначально не было способа написать тип функции в строке, вам пришлось использовать typedef, поэтому в большинстве старых кодов используетсяvoid fun(String element)
обозначение.Когда была введена нотация returnType Function(arguments)
(так как она была необходима для указания универсальных типов функций), стало проще писать типизированные параметры функции с типом first.
Оба используются, ни идиоматично, ни использоватьВы думаете, что читается лучше.
Существует одно различие между двумя форматами, которые стоит запомнить:
- Для записи
void fun(String element)
требуются имена для аргументов функции.Если вы пишете void fun(String)
, это интерпретируется как функция, принимающая один аргумент типа dynamic
с именем String
. - В нотации
void Function(String) fun
предполагается, что типом является имя одного аргумента.
Я лично предпочитаю исходный формат параметров функции, за исключением необходимости писать имена аргументов.