尝试在powershell中调用这个类来反转字符串,但是不知道如何调用它。很简单的问题,但不知道怎么做
class Reverse{
[string]$Stringy
[string]Reversi(){
return $(this.Stringy[-1..-$Stringy.length] -join "")
}
}
那么我不确定如何调用这个类。就其本身而言,返回语句做的工作,但我需要调用类,请帮助,没有提示只是指向代码没有联机帮助。
我试图回答这个问题,正如Abraham在他的评论中指出的那样,您需要创建一个类的实例:
class ReverseClass {
[string]$Stringy
ReverseClass([string]$String){
$this.Stringy = $String
}
[string]Reverse(){
return -join $this.Stringy[-1..-$this.Length()]
}
[int]Length(){
return $this.Stringy.Length
}
}
$z = [ReverseClass]'Hello World!'
$z.Reverse() # => !dlroW olleH
我再次强调,对于您需要做的事情来说,类是多余的:
function Reverse-String([string]$String){
-join $String[-1..-$String.Length]
}
Reverse-String 'Hello world!' # => !dlrow olleH
如果该类存储在像C:usersusermy documentsscript.ps1
这样的文件中,并且您想要将类或函数加载到当前会话中,则需要点源它(只需在路径之前添加一个点)。这将加载所有的东西,类,函数,变量等到你当前的作用域。
例如:
- 如果当前目录不是脚本所在目录:
. "C:usersusermy documentsscript.ps1"
- 如果您将目录更改为
my documents
,在这种情况下:
. .script.ps1
您确定需要一个带有实例方法的类吗?
如果你将方法改为static
,你可以传递任何字符串值作为方法参数,而无需创建类的实例即可获得结果:
class ReverseClass {
static [string] Reverse([string]$string){
return -join $string[-1..-$string.Length]
}
}
现在可以使用静态成员操作符::
来调用它:
PS ~> [ReverseClass]::Reverse("hello")
olleh
继续我的评论
…
class Reverse{
[string]$Stringy
[string]Reversi(){
return $(this.Stringy[-1..-$Stringy.length] -join "")
}
}
…不是PowerShell函数。这是在PowerShell中声明函数的方法。
<#
.Synopsis
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this
.EXAMPLE
Another example of how to use this
#>
function Verb-Noun
{
[CmdletBinding()]
[Alias()]
[OutputType([int])]
Param
(
[string]$Param1,
[int]$Param2
)
}
# calling the function
Verb-Noun -Param1 '' -Param2 ''
对于字符串,没有理由显式地将它们强制转换为字符串。任何带引号的内容(单引号或双引号)都会被自动视为字符串。
这些都记录在PowerShell帮助文件中…
Get-Help -Name About_functions
…和MS Docs.
虽然你可以在PowerShell v5或更高版本中创建类。如Powershell帮助文件所述…
Get-Help -Name About_classes
…和MS Docs.
class Reverse{
[string]$Stringy
[string]Reversi(){
return $this.Stringy[-1..-$this.Stringy.length] -join ""
}
}
p C:比;$reverse=New-Object - reverse -Property @{string ="Hello World"}
p C:比;$ reverse.Reversi ()
dlroW olleH