我正在研究一个比较两个对象的函数,以便检测它们是否相同。但是我希望它也可以与字符串或整数等其他类型一起使用。
C++ 允许您声明具有相同名称的不同函数,以以不同方式处理具有不同输入类型的函数调用。我知道参数集的存在,但是据我所知,用户是必须指定他正在使用的参数集的人。
我正在尝试做这样的事情
function Compare-Objects{
Param(
[Parameter(Mandatory=$true,
Position=0,
ParameterSetName = "Hashtables")]
[ValidateNotNullOrEmpty()]
[Hashtable]$Item1Hash,
[Parameter(Mandatory=$true,
Position=0,
ParameterSetName = "Integers")]
[ValidateNotNullOrEmpty()]
[int]$Item1int,
[Parameter(Mandatory=$true,
Position=1,
ParameterSetName = "Hashtables")]
[ValidateNotNullOrEmpty()]
[Hashtable]$Item2Hash,
[Parameter(Mandatory=$true,
Position=1,
ParameterSetName = "Integers")]
[ValidateNotNullOrEmpty()]
[Hashtable]$Item2Int
)
if($PSCmdlet.ParameterSetNamePositionv -match "Integers"){ Return ($Item1Int -eq $Item2Int)}
else{
#do some other stuff with $Item1Hash and $Item2Hash
}
}
如果我也可以将变量命名为相同的,则加分(因此$Item1Hash
,并在分配适当的类型时$Item1Int
成为两者)$Item1