用戶cashfoley在codeplex上發佈了一個看起來相當優雅的代碼集合,稱爲PSClass的「模塊」。名稱查找在Powershell腳本塊中如何工作?
當我點源psclass代碼到我自己的一些代碼,我能寫這樣的代碼:
$Animal = New-PSClass Animal {
constructor {
param($name, $legs)
# ...
}
method -override ToString {
"A $($this.Class.ClassName) named $($this.name) with $($this.Legs) Legs"
}
}
當我試圖然而,創建一個模塊出的PSClass代碼,我開始出現錯誤。 constructor
和method
名稱不再被識別。
看看實際的實現,我看到的是constructor
,method
等實際上是嵌套在New-PSClass函數中的函數。
因此,在我看來,當我點播PSClass.ps1文件時,我的腳本塊允許包含對嵌套在其他本地函數中的函數的引用。但是,當PSClass代碼成爲模塊時,導出New-PSClass函數(我嘗試使用清單並使用Export-ModuleMember),名稱不再可見。
有人可以向我解釋腳本塊,範圍規則和嵌套函數的可見性規則是如何協同工作的?
另外,有一種單獨的,是否有一個更好的類純定義協議純Powershell腳本? (具體來說,不涉及「只是寫在C#中,然後執行此操作......」)
ps> get-help about_scopes |更多 – x0n