2009-05-15 19 views
14

¿Hay alguna razón para utilizar la construcción "Param (...)" dentro de una definición de función?Parámetros de función en PowerShell

Según tengo entendido, debe usar esto para especificar parámetros para scripts (y scriptblocks). Veo muchos ejemplos en la web con los parámetros enumerados de esta manera en lugar de solo enumerar los parámetros después del nombre de la función.

Ejemplo:

function Foo([string]$Bar){ 
    #Body of function 
} 

O

function Foo{ 
    Param([string]$Bar) 

} 
+0

Quizás alguien tenga una mejor respuesta, pero estoy emitiendo mi voto como "es una cuestión de gusto". –

+0

Encontrado esto que sugiere que tiene razón: http://www.vistax64.com/powershell/62095-powershell-arguments-param-vs-args.html –

+0

Pregunta editada para incluir scriptblocks. –

Respuesta

19

En V1, realmente es solo una preferencia. El uso de la declaración param ha sido tradicionalmente más formal, pero funcionalmente es lo mismo.

Probablemente verá mucho más uso de PARAM en PowerShell V2 debido a la posibilidad de agregar atributos a los parámetros, de forma similar a los atributos en C#.

param 
(
[Parameter(Mandatory=$true, 
      Position=0, 
      ValueFromPipeline = $true, 
      ValueFromPipelineByPropertyName = $true)] 
[Alias("name")] 
[String] 
$path 
) 

Aquí puede especificar el atributo de parámetro y un grupo de argumentos para ese atributo. También puede especificar alias y otros requisitos de validación.

Keith tiene un par de puntos excelentes también. Puede usar la instrucción param para pasar parámetros a secuencias de comandos anónimas (lambda expressions) o a una secuencia de comandos PS1. Se requiere

1

Posiblemente como una medida de la consistencia? Siempre especificando los parámetros de la misma manera mejora la legibilidad.

6

parámetro() para especificar los parámetros de un archivo de comandos y para scriptblocks:

PS> $sb = {param($x,$y) $x + $y} 
PS> &$sb 1 3 
4 

tenerlo también estará disponible para las funciones tradicionales es sólo una cosa de la consistencia de la OMI. Es más agradable para las funciones avanzadas que tienden a tener una gran cantidad de equipaje, metadatos, por parámetro.

-1

Param es una función que se usa para extraer el valor de una variable de formulario que se pasa a su programa (puede ser Perl o cualquier lenguaje de scripting que probablemente usa CGI).

Por ejemplo, en un formulario XHTML, cuando usa un elemento de entrada (etiqueta) y especifica el tipo para ser "texto", también usará un parámetro llamado "nombre". nombre recibe un valor, digamos num, y este valor debe ser el parámetro para la función param para que pueda extraer el valor que el usuario ingresa en el cuadro de texto en su formulario.

Cuestiones relacionadas