Dart prend en charge les paramètres optionnels nommés et les paramètres optionnels positionnels. Quelles sont les différences entre les deux ?
De même, comment savoir si un paramètre facultatif a réellement été spécifié ?
Dart prend en charge les paramètres optionnels nommés et les paramètres optionnels positionnels. Quelles sont les différences entre les deux ?
De même, comment savoir si un paramètre facultatif a réellement été spécifié ?
Dart dispose de deux types de paramètres optionnels : nommé y positionnel . Avant de discuter des différences, permettez-moi d'abord de discuter des similitudes.
Les paramètres optionnels de Dart sont en option en ce sens que l'appelant n'est pas tenu de spécifier une valeur pour le paramètre lors de l'appel de la fonction.
Les paramètres facultatifs ne peuvent être déclarés qu'après les paramètres obligatoires.
Les paramètres facultatifs peuvent avoir une valeur par défaut, qui est utilisée lorsque l'appelant ne spécifie pas de valeur.
Paramètres positionnels facultatifs
Un paramètre enveloppé par [ ]
est un paramètre optionnel positionnel. Voici un exemple :
getHttpUrl(String server, String path, [int port=80]) {
// ...
}
Dans le code ci-dessus, port
est facultatif et a une valeur par défaut de 80
.
Vous pouvez appeler getHttpUrl
avec ou sans le troisième paramètre.
getHttpUrl('example.com', '/index.html', 8080); // port == 8080
getHttpUrl('example.com', '/index.html'); // port == 80
Vous pouvez spécifier plusieurs paramètres positionnels pour une fonction :
getHttpUrl(String server, String path, [int port=80, int numRetries=3]) {
// ...
}
Les paramètres facultatifs sont positionnel en ce sens que vous ne pouvez pas omettre port
si vous voulez spécifier numRetries
.
getHttpUrl('example.com', '/index.html');
getHttpUrl('example.com', '/index.html', 8080);
getHttpUrl('example.com', '/index.html', 8080, 5);
Bien sûr, à moins de savoir ce que sont 8080 et 5, il est difficile de dire ce que sont ces chiffres apparemment magiques. Vous pouvez utiliser paramètres facultatifs nommés pour créer des API plus lisibles.
Paramètres facultatifs nommés
Un paramètre enveloppé par { }
est un paramètre facultatif nommé. Voici un exemple :
getHttpUrl(String server, String path, {int port = 80}) {
// ...
}
Vous pouvez appeler getHttpUrl
avec ou sans le troisième paramètre. Vous pouvez consulter le site doit utiliser le nom du paramètre lors de l'appel de la fonction.
getHttpUrl('example.com', '/index.html', port: 8080); // port == 8080
getHttpUrl('example.com', '/index.html'); // port == 80
Vous pouvez spécifier plusieurs paramètres nommés pour une fonction :
getHttpUrl(String server, String path, {int port = 80, int numRetries = 3}) {
// ...
}
Comme les paramètres nommés sont référencés par leur nom, ils peuvent être utilisés dans un ordre différent de celui de leur déclaration.
getHttpUrl('example.com', '/index.html');
getHttpUrl('example.com', '/index.html', port: 8080);
getHttpUrl('example.com', '/index.html', port: 8080, numRetries: 5);
getHttpUrl('example.com', '/index.html', numRetries: 5, port: 8080);
getHttpUrl('example.com', '/index.html', numRetries: 5);
Je pense que les paramètres nommés rendent les sites d'appel plus faciles à comprendre, en particulier lorsqu'il y a des drapeaux booléens ou des chiffres hors contexte.
Vérifier si un paramètre optionnel a été fourni
Malheureusement, vous ne pouvez pas faire la distinction entre les cas "un paramètre facultatif n'a pas été fourni" et "un paramètre facultatif a été fourni avec la valeur par défaut".
Note : Vous pouvez utiliser des paramètres optionnels positionnels ou des paramètres facultatifs nommés, mais pas les deux dans la même fonction ou méthode. Les éléments suivants ne sont pas autorisés.
thisFunctionWontWork(String foo, [String positonal], {String named}) {
// will not work!
}
Dans Dart, d'après ce que j'ai compris, le paramètre de méthode peut être donné de deux façons.
>> Paramètre requis
Le paramètre requis est un ancien paramètre bien connu que nous connaissons tous.
exemple :
findVolume(int length, int breath, int height) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,30);
sortie :
length = 10, breath = 20, height = 30
>> Paramètre positionnel facultatif
le paramètre sera divulgué avec des crochets [ ] & les paramètres entre crochets sont facultatifs.
exemple :
findVolume(int length, int breath, [int height]) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,30);//valid
findVolume(10,20);//also valid
sortie :
length = 10, breath = 20, height = 30
length = 10, breath = 20, height = null // no value passed so height is null
>> Paramètre nommé facultatif
exemple :
findVolume(int length, int breath, {int height}) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,height:30);//valid & we can see the parameter name is mentioned here.
findVolume(10,20);//also valid
sortie :
length = 10, breath = 20, height = 30
length = 10, breath = 20, height = null
>> Paramètre optionnel par défaut
exemple :
findVolume(int length, int breath, {int height=10}) {
print('length = $length, breath = $breath, height = $height');
}
findVolume(10,20,height:30);//valid
findVolume(10,20);//valid
sortie :
length = 10, breath = 20, height = 30
length = 10, breath = 20, height = 10 // default value 10 is taken
merci pour l'explication claire donnée par ce lien vidéo, crédit au créateur de la vidéo.
lien vidéo : OptionalPositionalParameters
Le site Duration
classe prend des paramètres nommés :
const Duration(
{int days = 0,
int hours = 0,
int minutes = 0,
int seconds = 0,
int milliseconds = 0,
int microseconds = 0}
)
Le site DateTime
classe Le constructeur de l'application a un argument positionnel obligatoire, et 7 arguments positionnels optionnels :
DateTime(
int year,
[int month = 1,
int day = 1,
int hour = 0,
int minute = 0,
int second = 0,
int millisecond = 0,
int microsecond = 0]
)
Pour dates/heures En effet, il n'y a pas de sens à préciser un jour si on ne précise pas un mois. Si je vous disais lundi, vous ne sauriez pas de quel lundi je parle. Cela n'a pas de sens si vous indiquez un mois mais pas d'année. Les dates vont naturellement du plus grossier au plus fin. Bien sûr, dans la réalité, vous supposeriez que le lundi est le lundi suivant, mais les programmes ne peuvent pas le supposer.
Pour Durée il importe peu de savoir lequel des deux est spécifié. Une durée de temps peut être de 1 seconde, de 1 milliseconde ou de 5 jours. Si je vous dis d'attendre 5 secondes, je n'ai pas besoin de vous dire 0 jour, 0 heure, 0 minute et 5 secondes .
Lorsque le paramètre d'une fonction est spécifié à l'aide de la syntaxe "paramName : valeur", il s'agit d'un paramètre nommé. De tels paramètres peuvent être rendus facultatifs en les entourant de crochets [ et ]. Une démonstration rudimentaire de cette fonction peut être faite dans le programme Hello World suivant :
sayHello([String name = ' World!']) {
print('Hello, ${name}');
}
void main() {
sayHello('Govind');
}
Paramètres de position :
Ils sont identiques aux paramètres par défaut. Par exemple :
void add(int x, [int y = 3]);
Ici, y a la valeur par défaut de 3
Paramètres nommés :
Ce sont des paramètres qui peuvent être passés dans n'importe quel ordre en passant le nom du paramètre suivi de la valeur passée. Par exemple :
void sum({int num1, int num2});
Cette fonction est appelée comme suit :
sum(num1: 12, num2: 24);
Les paramètres nommés peuvent également avoir des valeurs par défaut.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.