함수에 매개 변수가 있는지 확인합니다.
다음과 같은 기능이 있습니다.
function T
{
Param
(
[switch] $IsValueNameRegularExpression
)
..
}
일반적으로 매개 변수가 있는지 확인하기 위해 수행할 작업if ($Param)
이것으로 보아[switch]
함수를 다음과 같이 부르는 경우T -IsValueNameRegularExpression:$false
에 대해 거짓으로 반환됩니다.if ($IsValueNameRegularExpression)
매개 변수가 존재하더라도 즉, 호출자가 선택적 매개 변수에 값을 지정했습니다.
매개 변수 유형을 변경하는 경우[switch]
로.[bool]
분명히 같은 일이 일어날 것입니다.
제 기능을 위한 코드에서 저는 몇 가지를 부릅니다.내 기본 설정을 포함하는 NET 메서드[bool]
"[switch]" 매개 변수이므로 사용자가 값을 지정하지 않은 경우(참이든 거짓이든) 에 전달하고 싶지 않습니다.NET 방식.
의 기본값과 일치하도록 매개 변수에 기본값을 할당할 수 있습니다.NET 방법이지만, 이는 의 기본값을 가정한 것입니다.NET 메서드는 변경되지 않습니다. 사실이 아닐 수도 있습니다.
그렇다면, 이것을 하는 더 우아한 방법이 있을까요?
사용하다$PSBoundParameters.ContainsKey()
매개 변수의 존재를 확인하려면:
function T
{
Param
(
[switch] $IsValueNameRegularExpression
)
$PSBoundParameters.ContainsKey('IsValueNameRegularExpression')
}
T
T -IsValueNameRegularExpression
T -IsValueNameRegularExpression:$false
출력:
False
True
True
보다 쉽고 정확한 방법은 IsPresent 속성을 사용하는 것입니다.거의 동일한 코드 사용:
function T {
Param (
[switch] $IsValueNameRegularExpression
)
$IsValueNameRegularExpression.IsPresent
}
T
T -IsValueNameRegularExpression
T -IsValueNameRegularExpression:$false
다음 출력을 생성합니다.
False
True
False
스위치를 false로 바인딩하면 "존재하지 않음"이 됩니다.
function T
{
Param([switch]$IsValueNameRegularExpression)
$IsValueNameRegularExpression.ToBool()
}
결과.
T
False
T -IsValueNameRegularExpression
True
T -IsValueNameRegularExpression:$true
True
T -IsValueNameRegularExpression:$false
False
언급URL : https://stackoverflow.com/questions/25326732/check-for-existence-of-parameter-in-function
'programing' 카테고리의 다른 글
파라미터 변경 시 Angular 2 재로드 경로 (0) | 2023.08.19 |
---|---|
봄에 멀티파트와 @RequestBody를 함께 사용할 수 있습니까? (0) | 2023.08.19 |
URL의 상태를 확인하는 PowerShell 스크립트 (0) | 2023.08.19 |
JSON을 POST할 때 CORS가 활성화되었지만 사전 비행에 대한 응답에 잘못된 HTTP 상태 코드 404가 있습니다. (0) | 2023.08.19 |
#1054 - 알 수 없는 열 - 백택스 문제 (0) | 2023.08.19 |