在powershell中,我们可以使用function关键字来定义一个函数,比如:
function get-data { param ( [int] $data = -1 ) return $data; }
这个名为get-data的函数接收一个int类型的参数$data,直接将其返回。那么,我同时还需要一个接收string类型的get-data函数怎么办?方法比较奇怪,至少和传统的c++之类的语言不同。
在powershell中定义重载函数,需要指定参数所属的parameter set,如下:
function global:get-data { param ( [parameter(parametersetname="byint", position=0)] [int] $intdata, [parameter(parametersetname="byswitch", position=0)] [switch] $booldata, [parameter(parametersetname="byarray", position=0)] [string[]] $arraydata ) write-host $pscmdlet.parametersetname }
不难发现,parametersetname指定了每个参数所属的parameterset,position表示这是一个匿名参数。而$pscmdlet.parametersetname表示了当前所使用的parameter set。用例如下:
ps > get-data 1 byint ps > get-data "a" byarray ps > get-data -booldata byswitch
如对本文有疑问, 点击进行留言回复!!
shell脚本快速入门之-----循环(for、while、until)
Unity通过脚本添加组件实现鼠标滑过3D物体高亮(附Demo)
shell脚本快速入门之-----shell脚本练习100例!!!
网友评论