Почему существует разница в возвращаемых значениях F и G в следующем коде?Возврат результата вызова функции с/без круглых скобок
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]
Насколько я понимаю, если функция возвращает какой-то пустой коллекции, PowerShell будет «разворачивать» его в нуль, и поэтому F делает то, что я ожидал. Но что происходит с G?
Редактировать: Как указано в JPBlanc, только PowerShell 3.0 демонстрирует эту разницу. В 2.0 обе строки печатают null
. Что изменилось?
Не могли бы вы объяснить? –
Я не верю, что это правильно. В 'Write-Type F',' F' будет интерпретироваться как строка '' F '', что не то, что я хочу. – ahihi
не совсем, @JPBlanc на самом деле прав, вы не должны указывать аргументы функции внутри скобок. Однако я не мог найти объяснения, почему. возрастной дизайн или скобки делает что-то особенное. Для того, чтобы F считался строкой, вы должны были бы окружить ее кавычками. Таким образом, F является объектом, а «F» - строкой. –