vasos tutorial google español container dart

tutorial - dart vs javascript



¿Cuál es la diferencia entre los parámetros nombrados y opcionales en Dart? (1)

Dart tiene dos tipos de parámetros opcionales: nombrado y posicional . Antes de discutir las diferencias, permítanme primero discutir las similitudes.

Los parámetros opcionales de Dart son opcionales en el sentido de que no se requiere que el que llama especifique un valor para el parámetro al llamar a la función.

Los parámetros opcionales solo se pueden declarar después de cualquier parámetro requerido.

Los parámetros opcionales pueden tener un valor predeterminado, que se usa cuando una persona que llama no especifica un valor.

Parámetros opcionales posicionales

Un parámetro envuelto por [ ] es un parámetro posicional opcional. Aquí hay un ejemplo:

getHttpUrl(String server, String path, [int port=80]) { // ... }

En el código anterior, el port es opcional y tiene un valor predeterminado de 80 .

Puede llamar a getHttpUrl con o sin el tercer parámetro.

getHttpUrl(''example.com'', ''/index.html'', 8080); // port == 8080 getHttpUrl(''example.com'', ''/index.html''); // port == 80

Puede especificar múltiples parámetros posicionales para una función:

getHttpUrl(String server, String path, [int port=80, int numRetries=3]) { // ... }

Los parámetros opcionales son posicionales porque no puede omitir el port si desea especificar numRetries .

getHttpUrl(''example.com'', ''/index.html''); getHttpUrl(''example.com'', ''/index.html'', 8080); getHttpUrl(''example.com'', ''/index.html'', 8080, 5);

Por supuesto, a menos que sepa lo que 8080 y 5 son, es difícil decir cuáles son esos números aparentemente mágicos. Puede usar parámetros opcionales nombrados para crear API más legibles.

Parámetros opcionales nombrados

Un parámetro envuelto por { } es un parámetro opcional nombrado. Aquí hay un ejemplo:

getHttpUrl(String server, String path, {int port: 80}) { // ... }

Puede llamar a getHttpUrl con o sin el tercer parámetro. Debe usar el nombre del parámetro cuando llama a la función.

getHttpUrl(''example.com'', ''/index.html'', port: 8080); // port == 8080 getHttpUrl(''example.com'', ''/index.html''); // port == 80

Puede especificar múltiples parámetros nombrados para una función:

getHttpUrl(String server, String path, {int port: 80, int numRetries: 3}) { // ... }

Debido a que los parámetros con nombre se referencian por nombre, se pueden usar en un orden diferente de su declaración.

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);

Creo que los parámetros con nombre hacen que los sitios de llamadas sean más fáciles de comprender, especialmente cuando hay indicadores booleanos o números fuera de contexto.

Comprobando si se proporcionó un parámetro opcional

Desafortunadamente, no se puede distinguir entre los casos "no se proporcionó un parámetro opcional" y "se proporcionó un parámetro opcional con el valor predeterminado".

Nota: Puede usar parámetros posicionales opcionales o parámetros opcionales nombrados, pero no ambos en la misma función o método. Lo siguiente no está permitido.

thisFunctionWontWork(String foo, [String positonal], {String named}) { // will not work! }

Dart admite tanto los parámetros opcionales nombrados como los parámetros posicionales opcionales. ¿Cuáles son las diferencias entre los dos?

Además, ¿cómo se puede saber si se ha especificado realmente un parámetro opcional?