Saltar al contenido

¿Cuál es la diferencia entre los parámetros con nombre y posicionales en Dart?

Si encuentras alguna parte que no comprendes puedes dejarlo en los comentarios y trataremos de ayudarte lo más rápido posible.

Solución:

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

Los parámetros opcionales de Dart son Opcional ya que no se requiere que la persona que llama especifique un valor para el parámetro cuando llama a la función.

Los parámetros opcionales solo se pueden declarar después de los parámetros obligatorios.

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

Parámetros opcionales posicionales

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

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

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

Puedes llamar 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 varios parámetros posicionales para una función:

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

Los parámetros opcionales son posicional en eso no puedes omitir port si quieres 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 qué son 8080 y 5, es difícil saber cuáles son esos números aparentemente mágicos. Puedes 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 con nombre. Aquí hay un ejemplo:

getHttpUrl(String server, String path, int port = 80) 
  // ...

Puedes llamar getHttpUrl con o sin el tercer parámetro. Ustedes deber use el nombre del parámetro cuando llame a la función.

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

Puede especificar varios parámetros con nombre 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 su nombre, se pueden usar en un orden diferente al 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 facilitan la comprensión de los sitios de llamadas, especialmente cuando hay indicadores booleanos o números fuera de contexto.

Comprobando si se proporcionó un parámetro opcional

Desafortunadamente, no 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 utilizar parámetros opcionales posicionales o parámetros opcionales nombrados, pero no ambos en la misma función o método. No se permite lo siguiente.

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

En Dart, según tengo entendido, el parámetro del método se puede dar en dos tipos.

  • Parámetro requerido
  • Parámetro opcional (posicional, con nombre y predeterminado)

>> Parámetro requerido

El parámetro obligatorio es un parámetro de estilo antiguo bien conocido con el que todos estamos familiarizados

ejemplo:

findVolume(int length, int breath, int height) 
 print('length = $length, breath = $breath, height = $height');


findVolume(10,20,30);

producción:

length = 10, breath = 20, height = 30

>> Parámetro posicional opcional

El parámetro se mostrará con corchetes. [ ] & el parámetro entre corchetes son opcionales.

ejemplo:

findVolume(int length, int breath, [int height]) 
 print('length = $length, breath = $breath, height = $height');


findVolume(10,20,30);//valid
findVolume(10,20);//also valid

producción:

length = 10, breath = 20, height = 30
length = 10, breath = 20, height = null // no value passed so height is null

>> Parámetro con nombre opcional

  • el parámetro se mostrará con corchete
  • Los parámetros entre corchetes son opcionales.
  • tienes que usar el nombre del parámetro para asignar un valor que se separa con colan :
  • en el orden de los parámetros entre corchetes no importa
  • Estos parámetros de tipo nos ayudan a evitar confusiones al pasar el valor de una función que tiene muchos parámetros.

ejemplo:

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

producción:

length = 10, breath = 20, height = 30
length = 10, breath = 20, height = null

>> Parámetro predeterminado opcional

  • Igual que el parámetro con nombre opcional, además, podemos asignar un valor predeterminado para este parámetro.
  • lo que significa que no se pasa ningún valor, se tomará este valor predeterminado.

ejemplo:

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 

producción:

length = 10, breath = 20, height = 30
length = 10, breath = 20, height = 10 // default value 10 is taken

gracias por la clara explicación dada desde este enlace de video, créditos para el creador del video.

enlace de video: OptionalPositionalParameters

enlace de video: OptionalNamedParameters

enlace de video: OptionalDefaultParameters

Cuando el parámetro de una función se especifica usando la sintaxis “paramName: value”, entonces es un parámetro con nombre. Dichos parámetros se pueden convertir en opcionales encerrándolos entre [ and ] soportes. Se puede hacer una demostración rudimentaria de esta función en el siguiente programa Hello World:

sayHello([String name = ' World!']) 
  print('Hello, $name');


void main() 
  sayHello('Govind');

Aquí tienes las comentarios y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *