¿Qué es exactamente un PowerShell ScriptBlock?
Un PowerShell ScriptBlock no es uncierre léxico ya que no se cierra sobre las variables referenciadas en su entorno de declaración. En su lugar, parece aprovechar el alcance dinámico y las variables libres que están vinculadas en tiempo de ejecución en una expresión lambda.
function Get-Block {
$b = "PowerShell"
$value = {"Hello $b"}
return $value
}
$block = Get-Block
& $block
# Hello
# PowerShell is not written as it is not defined in the scope
# in which the block was executed.
function foo {
$value = 5
function bar {
return $value
}
return bar
}
foo
# 5
# 5 is written $value existed during the evaluation of the bar function
# it is my understanding that a function is a named scriptblock
# which is also registered to function:
Llamar a GetNewClosure () en un ScriptBlock devuelve un nuevo ScriptBlock que se cierra sobre las variables a las que se hace referencia. Pero esto es muy limitado en alcance y capacidad.
¿Qué es una clasificación de ScriptBlock?