如何使用上下文

时间:2016-06-20 18:31:10

标签: powershell

我有一个哈希数组,想要为哈希(不是方法)添加一个函数。显然$this没有为它定义:

$x=@{ a = @{ p1 = "a"; fn = {$this.p1} } }

我也不能这样做:

$x.keys |%{ $x[$_].fn = {$x[$_].p1} }

因为函数不是闭包所以在我运行它时$_没有被定义为创建时的那个

我不想将它定义为方法(-membertype scriptmethod)的原因是我想用这种方式调用它:

$x.a.fn "test"

比Powershellish更多:

$x.a.fn("test")

我也不想这样做:

& $x.a.fn "test"

因为用户永远不会记住所有这些选择(语法在psh中过于复杂)

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

很明显Psh已经关闭了!所以我可以这样做:

$x=@{ p1 = "a"; }
$x.fn = {$x.p1}.GetNewClosure();

然后像这样调用它:

&$x.fn