0
我有這個代碼返回有關TFS WorkItems的信息。我刪除了TFS特定的東西來減少噪音。在一天結束時,它是一個遞歸函數,它始於一個根,然後沿着一棵樹走,直到它找到孩子。我想添加一些邏輯來根據級別以不同的格式輸出。可能會在每行添加一個製表符,或者以其他方式直觀地標識每個級別,有沒有類似if ($$some_variable -eq 1) {write-host "welcome to level 1"}
?
這裏是PowerShell代碼:Powershell遞歸函數 - 如何判斷我在哪個級別?
$wi_id = 123
[email protected]()
function get_linkedWIs {
param($wi_id)
$WIT.GetWorkItem($wi_id) |%{ $_.WorkItemLinks} |?{$_.LinkTypeEnd.Name -eq "Child" } | %{$result +=$WIT.GetWorkItem($_.targetid)}
$result.GetEnumerator() | Sort -Property id -Unique
}
function get_children {
param($wi_id)
$rs = get_linkedWIs $wi_id
$rs | %{
Write-Host "this is a num - "$script:num
write-host $_.Type.Name" "$_.id" "$_.Title
$has_children = 0
$_.WorkItemLinks | %{if ($_.LinkTypeEnd.Name -eq "Child" -or $has_children -eq 1) {$has_children =1} }
if ($has_children -eq 1)
{
$script:num +=1
get_children $_.id
}
}
}
get_children $wi_id
如果每個節點只有一個孩子,那麼這種方式可以正常工作,但顯然並非如此。因此,讓我們來看一個1級的「功能」,然後是2級的「用戶故事」。根據您的建議,每次爲「用戶故事」調用此功能時,級別指示器都會增加,但它不應該。只有當「用戶故事」子工作項目被處理時,級別應該增加到3.有意義嗎? – Mordechai
在我的第一個建議中,「feature」節點用'$ level + 1'調用它的每個子節點;不要增加本地值,只需再給孩子一個。每個「用戶故事」的孩子都會得到*相同*遞增的值。您的描述似乎暗示「升級」和「孩子」並不等同。請發佈你的樹結構的描述。 – Prune
謝謝,不,他們是等效的。我只是在循環內添加了$ level + 1來進行遞歸調用。我感覺這很簡單。 – Mordechai