Sobes.tech
Junior

Milleks kasutatakse nimetatud parameetreid funktsioonides ja konstruktorites?

sobes.tech AI

Vastus AI-lt

Dart/Flutteri funktsioonides ja konstruktorites nimetatud parameetrid lahendavad mitu ülesannet:

  1. Koodi loetavuse parandamine: Nimetatud parameetrite nimed näitavad selgelt nende otstarvet väljakutsel. See on eriti kasulik, kui funktsioonil või konstruktoril on palju sama tüüpi argumente.

    // Nimeta parameetriteta, ei ole kohe selge, mida tähendavad 1.0 ja 5.0
    Widget buildContainer(1.0, 5.0, Colors.blue);
    
    // Nimeta parameetritega, argumentide otstarve on selge
    Widget buildContainer({double? padding, double? margin, Color? color});
    Widget container = buildContainer(padding: 1.0, margin: 5.0, color: Colors.blue);
    
  2. Kutsepaindlikkuse tagamine: Need võimaldavad kutsuda funktsioone või konstruktorid, edastades ainult vajalikud parameetrid, ignoreerides ülejäänud, kui need ei ole kohustuslikud (required või vaikimisi väärtused).

    // Kutsumine ainult vajalike parameetritega
    Widget container = buildContainer(color: Colors.red);
    
  3. Argumentide järjekorra viga ennetamine: Kuna parameetrid on märgitud nime järgi, ei ole nende järjekord väljakutsel oluline, mis väldib vigu, mis on seotud argumentide vale järjekorraga.

    // Nimeta parameetrite järjekord ei ole oluline
    Widget container1 = buildContainer(padding: 1.0, color: Colors.blue);
    Widget container2 = buildContainer(color: Colors.blue, padding: 1.0); // Võrdne
    
  4. Koodi toetuse parandamine: Nimeta parameetrid lihtsustavad uute mitte-kohustuslike parameetrite lisamist funktsiooni või klassi tulevikus ilma olemasolevaid väljakutseid muutmata.

Enamik Flutteri vidinaid kasutab nimetatud parameetreid, mis muudab nende API-d intuitiivsemaks ja paindlikumaks.

Need deklareeritakse sulgudes {} funktsiooni või konstruktorite parameetrites. Kohustuslikud nimetatud parameetrid märgitakse sõnaga required.

// Kohustuslik nimetatud parameeter
void printRequiredName({required String name}) {
  print(name);
}

// Mitte-kohustuslik nimetatud parameeter, vaikimisi väärtusega
void printOptionalAge({int age = 30}) {
  print(age);
}