gpt4 book ai didi

Powershell 对象 : referencing Self

转载 作者:行者123 更新时间:2023-12-04 17:09:00 29 4
gpt4 key购买 nike

我可以创建一个具有四个这样的属性的对象

$pocketKnife = New-Object PSObject -property @{
Color = 'Black'
Weight = '55'
Manufacturer = 'Buck'
Blades = '1'
}

并且基本上按预期工作。但是,我似乎无法理解如何添加引用对象自身属性的方法。我可以添加这个
$pocketKnife | Add-Member ScriptMethod GetColor {
Write-Host "Color = $($pocketKnife.Color)"
}

然后我可以调用 $pocketKnife.GetColor() 并且它按预期工作。但是我必须将对象引用硬连接到方法中,而且我实际上是在引用在对象本身之外定义的对象变量。我想做的是
$pocketKnife | Add-Member ScriptMethod GetColor {
Write-Host "Color = $($Self.Color)"
}

最终我想创建一个 Logger 对象,它会初始化自己并在一个属性中建立一个适当的日志文件名,并且有一个 Log 方法,它接受一个字符串参数,当调用它时它会记录到属性中的日志文件。我觉得这可能不仅仅是 PowerShell 真正打算做的面向对象的工作。就像我真的应该将我的(自定义)对象概念限制为数据结构,而不是类和实例?
FWIW,我对 OOP 足够陌生,我不知道我不知道什么。我所知道的是,现在我正在使用全局变量作为日志文件路径,以及引用它的 init 和 log 函数,我正在寻找消除全局变量的最佳方法,并且还使用 PS 来发挥它的潜力,并在我参与时学习一些编程概念。我所有的 Google Fu 最终都提供了更多关于对象属性的信息,除了简单的示例之外,没有任何关于方法的信息,这些示例回显了一些文本以证明您在方法中。
因此,非常感谢任何建议,即使只是“那棵树上没什么”

谢谢!

最佳答案

PowerShell 和 C# 非常相似。 C# 使用 this 引用当前实例/本身,而 PowerShell 使用 $this

$This

In a script block that defines a script property or script method, the $This variable refers to the object that is being extended.



来源: about_Automatic_Variables

样本:
$pocketKnife2 = New-Object PSObject -property @{
Color = 'Black'
Weight = '55'
Manufacturer = 'Buck'
Blades = '1'
}

$pocketKnife2 | Add-Member ScriptMethod GetColor {
Write-Host "Color = $($this.Color)"
}

$pocketKnife2.GetColor()
Color = Black

$pocketKnife2.Color = 'Red'

$pocketKnife2.GetColor()
Color = Red

关于Powershell 对象 : referencing Self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28516606/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com