Code généralParamètres avec la valeur par défaut pas dans PsBoundParameters?
Tenir compte de ce code:
PS> function Test { param($p='default value') $PsBoundParameters }
PS> Test 'some value'
Key Value
--- -----
p some value
PS> Test
# nothing
j'attendre à ce que $PsBoundParameters
contiendrait record pour la variable $p
sur les deux cas. Est-ce que c'est un comportement correct?
Question
Je voudrais utiliser splatting qui fonctionnerait comme ça pour beaucoup de fonctions:
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
}
Je ne veux pas appeler SomeFuncWithManyRequiredParams avec tous les params énumérés:
SomeFuncWithManyRequiredParams -p1 $p1 -p2 $p2 -p3 $p3 ...
Est-ce possible?
Il y a deux questions que je dois poser ici, pour chaque paramètre en question: Pourquoi SomeFunc n'a-t-il pas la même valeur par défaut que SimplifiedFunc? Et, si les valeurs par défaut doivent être différentes, alors pourquoi SimplifiedFunc permet à l'utilisateur de surcharger la valeur par défaut (puisque, dans ce cas, ils pourraient simplement appeler SomeFunc directement pour surcharger)? – jpaugh