Código generalParámetros con valor predeterminado no en PsBoundParameters?
consideran este código:
PS> function Test { param($p='default value') $PsBoundParameters }
PS> Test 'some value'
Key Value
--- -----
p some value
PS> Test
# nothing
yo esperaría que $PsBoundParameters
contendría récord para $p
variables en ambos casos. ¿Es ese comportamiento correcto?
Pregunta
Me gustaría utilizar splatting que trabajaría como esto para una gran cantidad de funciones:
function SomeFuncWithManyRequiredParams {
param(
[Parameter(Mandatory=$true)][string]$p1,
[Parameter(Mandatory=$true)][string]$p2,
[Parameter(Mandatory=$true)][string]$p3,
...other parameters
)
...
}
function SimplifiedFuncWithDefaultValues {
param(
[Parameter(Mandatory=$false)][string]$p1='default for p1',
[Parameter(Mandatory=$false)][string]$p2='default for p2',
[Parameter(Mandatory=$false)][string]$p3='default for p3',
...other parameters
)
SomeFuncWithManyRequiredParams @PsBoundParameters
}
no quiero llamar SomeFuncWithManyRequiredParams con todos los parametros enumerados:
SomeFuncWithManyRequiredParams -p1 $p1 -p2 $p2 -p3 $p3 ...
¿Es posible?
Hay dos preguntas que debería hacer aquí, para cada parámetro en cuestión: ¿Por qué SomeFunc no tiene el mismo valor predeterminado que SimplifiedFunc? Y, si los valores predeterminados deben ser diferentes, ¿por qué SimplifiedFunc permite al usuario anular el valor predeterminado (ya que, en ese caso, simplemente podrían llamar a SomeFunc para sobrescribir)? – jpaugh