Consider such function:
function Test($foo, $bar)
{
...
}
We can call it:
Test -foo $null
Test
How can I know when the -foo was omitted, and when it was $null?
Consider such function:
function Test($foo, $bar)
{
...
}
We can call it:
Test -foo $null
Test
How can I know when the -foo was omitted, and when it was $null?
Unless it is possible to trap exceptions thrown from param statement (and since param has to be the first, I can't see this would work):
function {
trap { "Something failed" }
param($foo = $(throw "Foo not specified"))
...
Then I can't see a way (you get the same thing with [switch] parameters: default or explicitly -mySwitch:$false
).
The solution based on Richard's idea:
$missed = "{716C1AD7-0DA6-45e6-854E-4B466508EB96}"
function Test($foo = $missed, $bar)
{
if($foo -eq $missed) {
Write-Host 'Missed'
}
else
{
Write-Host "Foo: $foo"
}
}
Test -foo $null
Test