1.2K
Los que incursionaron en la programación estarían familiarizados con el devolver palabra clave. El uso primario de devolver, como su nombre lo indica, es devolver el resultado y salir de un ámbito. El ámbito puede ser una función, un script o un bloque de script. Una vez que se invoca la palabra clave de retorno, PowerShell libera el control al bloque de código de llamada.
Retorno de PowerShell: conceptos básicos
Para ilustrar, el siguiente código imprime la cadena «el numero es %n«, dónde %norte es de 1 a 5.
for ($i = 1; $i -le 5; $i++) { "The number is $i" }
Pero cuando inserta la palabra clave de retorno después del resultado, toda la iteración finaliza después del primer resultado.
for ($i = 1; $i -le 5; $i++) { "The number is $i" return }
Como puede ver a continuación, el ciclo for finaliza después de que se muestra el primer resultado debido a la devolver palabra clave que siguió.
Veamos otro ejemplo. El siguiente código imprime la cadena «el numero es %n» dónde %norte son los números del 1 al 5. El resultado se mostrará dos veces en cada iteración, una en verde y otra en magenta.
1..5 | ForEach-Object { Write-Host "The number is $_" -ForegroundColor Green Write-Host "The number is $_" -ForegroundColor Magenta }
Pero cuando inserta la palabra clave de retorno, finaliza el bucle y devuelve el control al código de llamada.
1..5 | ForEach-Object { Write-Host "The number is $_" -ForegroundColor Green return Write-Host "The number is $_" -ForegroundColor Magenta }
Parece sencillo, ¿verdad? Entiendes la esencia. Pero la palabra clave de retorno de PowerShell tiene más utilidad que simplemente terminar el alcance actual.
Retorno de función de PowerShell
La palabra clave return utiliza la siguiente sintaxis.
return [<expression>]
El [<expression>] puede ser cualquier objeto y tipo de datos de PowerShell, como booleano, entero, cadena, etc. Da como resultado que PowerShell se envíe al flujo de salida de forma predeterminada, incluso sin invocar el devolver palabra clave. entonces cuando es devolver ¿útil?
Ejemplo 1: devolver un valor calculado
Usemos return en una función llamada Obtener cuadrado usando el código de abajo.
Function Get-Square($number) { return [math]::Sqrt($number) "This line will not be displayed" }
Como puede ver, el retorno de la función de PowerShell muestra el resultado y sale de la función. El «Esta línea no se mostrará” no fue enviado a la salida.
Nota. Obtenga información sobre cómo comentar el código de PowerShell.
Ejemplo 2: devolver el resultado de una coincidencia condicional
Otro ejemplo práctico de devolución de función de PowerShell es cuando se devuelve una coincidencia de una condición. Cuando ejecuta una función que verifica si el valor coincide con una colección, la palabra clave de retorno puede devolver el resultado y finalizar la búsqueda en esa instancia.
Primero, probemos una función sin la palabra clave return.
Function Find-Number { param ( [int[]]$numCollection, [int]$numToFind ) for ($i = 0 ; $i -lt $numCollection.Count; $i++) { if ($numCollection[$i] -eq $numToFind) { "Found the number $numToFind at position $i" } } }
Este Buscar número La función toma dos parámetros:
- $numColección — una matriz de números para usar como valores de búsqueda.
- $numToFind — el único número a encontrar en el $numColección formación.
Ahora invoquemos la función ejecutando el siguiente comando.
Find-Number -numCollection 1,5,3,6,7,6 -numToFind 6
El comando buscará el número. 6 con la matriz de 1,5,3,6,7,6. De acuerdo con el resultado a continuación, la función encontró dos instancias del número 6 en la colección, lo cual es correcto.
Pero, ¿y si queremos que la función termine cuando encuentre la primera instancia? Entonces podemos usar el devolver palabra clave en su lugar. Agreguemos la palabra clave return al comienzo de la línea 8.
Esta vez, la función de PowerShell devuelve la primera instancia y finaliza.
Ejemplo 3: devolver múltiples objetos
También puede controlar los objetos a la salida usando el devolver palabra clave. Por ejemplo, la siguiente función (ObtenerServicioYProceso) devuelve dos objetos: Servicios (Sistema.Servicio.ServiceController) y Procesos (Sistema.Diagnóstico.Proceso).
Function GetServiceAndProcess { return ` $( Get-Service -ErrorAction SilentlyContinue | Select-Object -First 5 ), $( Get-Process -ErrorAction SilentlyContinue | Select-Object -First 5 ) }
Invoque la función de PowerShell y almacene los resultados en el $resultado variable.
$result = GetServiceAndProcess ($result[0] | Get-Member)[0].TypeName ($result[1] | Get-Member)[0].TypeName
O puede almacenar el resultado de retorno de la función PowerShell en variables separadas de esta manera:
$service, $process = GetServiceAndProcess $service $process
Conclusión
La palabra clave return de PowerShell tiene dos propósitos principales: devolver resultados y finalizar el ámbito actual. El uso de la palabra clave de devolución de función de PowerShell le permite controlar la salida de su código y cuándo y dónde salir.