Dlaczego w poniższych kodach występuje różnica w wartościach zwracanych przez F i G?Zwracanie wyniku wywołania funkcji z nawiasem/bez nawiasów
Function F {
Return (New-Object Collections.Generic.LinkedList[Object])
}
Function G {
Return New-Object Collections.Generic.LinkedList[Object]
}
Function Write-Type($x) {
If($null -eq $x) {
Write-Host "null"
} Else {
Write-Host $x.GetType()
}
}
Write-Type (F) # -> null
Write-Type (G) # -> System.Collections.Generic.LinkedList`1[System.Object]
O ile mi zrozumieć, jeśli funkcja zwraca jakąś pustą kolekcji, PowerShell będzie „rozpakować” go na null, a więc F ma co się spodziewać. Ale co się dzieje z G?
Edycja: Jak wskazał JPBlanc, tylko PowerShell 3.0 wykazuje tę różnicę. W wersji 2.0 obie linie drukują się w postaci null
. Co się zmieniło?
Czy mógłbyś wyjaśnić? –
Nie sądzę, że to jest poprawne.W 'Write-Type F',' F' będzie interpretowane jako ciąg '" F "', który nie jest tym, czego chcę. – ahihi
niezupełnie, @JPBlanc ma rację, nie powinieneś umieszczać argumentów funkcji w nawiasach, ale nie mogłem znaleźć wyjaśnienia dlaczego. Projekt wieku lub nawiasy robią coś specjalnego. Aby F był traktowany jako łańcuch, musiałbyś go otoczyć cudzysłowem. Zatem F jest obiektem, a "F" jest ciągiem. –