Mire használják a névvel ellátott paramétereket függvényekben és konstruktorokban?
sobes.tech MI
Válasz az MI-től
A Dart/Flutter függvényekben és konstruktorokban a nevezett paraméterek több feladatot is megoldanak:
-
A kód olvashatóságának javítása: A paraméterek neve egyértelműen jelzi azok célját a hívás során. Ez különösen hasznos, ha egy függvény vagy konstruktor sok azonos típusú argumentummal rendelkezik.
// Név nélküli paraméterekkel, nem egyértelmű, mit jelentenek az 1.0 és 5.0 Widget buildContainer(1.0, 5.0, Colors.blue); // Névvel ellátott paraméterekkel, az argumentumok hozzárendelése nyilvánvaló Widget buildContainer({double? padding, double? margin, Color? color}); Widget container = buildContainer(padding: 1.0, margin: 5.0, color: Colors.blue); -
A hívás rugalmasságának biztosítása: Lehetővé teszik, hogy csak a szükséges paramétereket adjuk át, a többit figyelmen kívül hagyva, ha nem kötelezőek (a
requiredvagy alapértelmezett értékek használatával).// Csak a szükséges paraméterek átadásával történő hívás Widget container = buildContainer(color: Colors.red); -
A paraméterek sorrendjének hibáinak megelőzése: Mivel a paraméterek név szerint vannak megadva, a sorrend nem számít, így elkerülhetők a helytelen sorrendből adódó hibák.
// A név szerint megadott paraméterek sorrendje nem számít Widget container1 = buildContainer(padding: 1.0, color: Colors.blue); Widget container2 = buildContainer(color: Colors.blue, padding: 1.0); // Egyenértékű -
A kód támogatásának javítása: A nevezett paraméterek megkönnyítik új, opcionális paraméterek hozzáadását a függvény vagy osztály jövőbeli verzióiban anélkül, hogy módosítani kellene a meglévő hívásokat.
A Flutterben a legtöbb widget nevezett paramétereket használ, ami az API-t intuitívabbá és rugalmasabbá teszi.
Ezeket a paramétereket kapcsos zárójelek {} közé írják a függvény vagy konstruktor paraméterlistájában. A kötelező nevezett paramétereket a required kulcsszóval jelölik.
// Kötelező nevezett paraméter
void printRequiredName({required String name}) {
print(name);
}
// Opcionális nevezett paraméter alapértelmezett értékkel
void printOptionalAge({int age = 30}) {
print(age);
}