Powershell调用类的字符串?



尝试在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

最新更新