我知道Ruby有一個map!
這樣做的方法。目前在PowerShell中,我所做的是:迭代數組並修改PowerShell中的元素的最佳方式是什麼?
$new_array = @();
$array | % {
$new_array += <do something with the currently element $)>;
}
$array = $new_array;
我想知道實現此目的的最佳方法。謝謝!
我知道Ruby有一個map!
這樣做的方法。目前在PowerShell中,我所做的是:迭代數組並修改PowerShell中的元素的最佳方式是什麼?
$new_array = @();
$array | % {
$new_array += <do something with the currently element $)>;
}
$array = $new_array;
我想知道實現此目的的最佳方法。謝謝!
最簡單的我能想到的是
$array | %{ $_ + 1 }
$_ + 1
是我想要的轉變。
所以,你可以這樣做:
$new = $array | %{$_ + 1}
或
$array = $array | %{ $_ + 1}
PS: 如果你願意,可以定義地圖功能:
function map ([scriptblock]$script, [array] $a) {
$a | %{ & $script $_ }
}
map {param($i) $i + 1} 1,2,3
或撰寫Sy的擴展方法stem.Array:http://blogs.msdn.com/b/powershell/archive/2008/09/06/hate-add-member-powershell-s-adaptive-type-system.aspx
您也可以使用過濾器:
$arr = 1,2,3
filter addone {$_ +1}
$arr | addone
或過濾功能:
function addone {process{$_ +1}}
$arr | addone
或匿名過濾器:
$addone = {$_ +1}
$addone.isfilter = $true
$arr | &$addone
編輯:該匿名過濾器工作日可能會被編號。在V3測試版中不再有效,我懷疑這不會改變。看起來腳本塊在創建後立即編譯,並且.isfilter屬性在編譯後無法更改。
另外'$ anonymousFunc = {$ _ * 3}'和'1,2,3 | %$ anonymousFunc' – stej 2012-03-14 07:15:10