我有一个哈希数组,想要为哈希(不是方法)添加一个函数。显然$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中过于复杂)
我该如何做到这一点?
答案 0 :(得分:1)
$x=@{ p1 = "a"; }
$x.fn = {$x.p1}.GetNewClosure();
然后像这样调用它:
&$x.fn