function test() {
write-Host "Called by: $($MyInvocation.Line)"
}
$a = test
Quais saídas
Called by: $a = test
?
É possível que uma função retorne o nome da variável que a armazena?
, por exemplo, $ a = myFunction
e a função sabe que ela é mantida em $ a, quando $ a é dinamicamente atribuído a ela em um shell?
Eu não acho que isso seja possível, nem faria muito sentido.
É como esperar que o inteiro 42
saiba se foi armazenado na variável $answer
.
Quando uma função retorna, somente seu valor de retorno (se houver) é armazenado em uma variável (se uma atribuição for realmente usada). Se Get-Answer
retornar 42
e você emitir o comando $answer = Get-Answer
, $answer
conterá 42
, mas não será mantido nenhum registro do fato de ter sido armazenado por ter retornado de uma função; para todos os efeitos, os resultados finais de $answer = 42
e $answer = Get-Answer
são idênticos, se Get-Answer
realmente retornar 42
.
Além disso, a atribuição (se houver) só acontece após uma função retorna; a função fornece apenas um valor de retorno (se houver); não importa e não deveria se importar com o que o PowerShell fará com esse valor depois que ele retornar; e seu valor de retorno poderia muito bem ser descartado em vez de ser atribuído a qualquer coisa. Não há um link direto entre $answer
e Get-Answer
: o que o PowerShell faz quando enfrenta um comando como $answer = Get-Answer
:
Get-Answer
Get-Answer
$answer
Nenhum dos jogadores tem conhecimento deste link; a função não sabe para que seu valor de retorno será usado, e a variável não sabe de onde vem o valor atribuído.
E mesmo que algum registro desta tarefa tenha acontecido, definitivamente não teria acontecido ainda enquanto Get-Answer
ainda estivesse sendo executado.
Com as informações mínimas que você compartilhou, esse é o melhor palpite que eu poderia fazer.
Eu estou indo em grande parte em sua declaração de "passar algum outro resultado em uma função diferente"
myFunction1 {
...code...
return $someThing
}
myFunction2 {
param ($param1)
...code...
}
Uso
$a = myFunction1
myFunction2 $a
Esteja ciente de que os cmds de echo ou write-hosts dentro de uma função também retornam valores. Use write-debug para informações de depuração, ou se você realmente precisar da informação, o retorno "retornado" é como uma matriz (ou um objeto personalizado)
return @($var1, $va2, $var3)