codice generaleParametri con valore predefinito non in PsBoundParameters?
Considerate questo codice:
PS> function Test { param($p='default value') $PsBoundParameters }
PS> Test 'some value'
Key Value
--- -----
p some value
PS> Test
# nothing
Mi aspetterei che $PsBoundParameters
conterrebbe record per $p
variabile su entrambi i casi. È un comportamento corretto?
Domanda
Mi piacerebbe usare splatting che avrebbe funzionato in questo modo per un sacco di funzioni:
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
}
Non voglio chiamare SomeFuncWithManyRequiredParams con tutti i params enumerati:
SomeFuncWithManyRequiredParams -p1 $p1 -p2 $p2 -p3 $p3 ...
è possibile?
Ci sono due domande che dovrei chiedere qui, per ogni parametro in questione: Perché SomeFunc non ha lo stesso valore predefinito di SimplifiedFunc? E, se i valori predefiniti devono essere diversi, allora perché SimplifiedFunc consente all'utente di ignorare il valore predefinito (poiché, in tal caso, potrebbero semplicemente chiamare SomeFunc direttamente per sovrascrivere)? – jpaugh