何时评估数据部分?

Tra*_*vis 7 powershell

什么时候评估PowerShell 数据节

具体来说,在运行时定义/加载时它们是否只被评估过一次?还是在包含函数的每次执行中都对它们进行了评估(即使已经定义/加载了该函数)?

我假设包含上下文是一个函数或高级函数,在定义/加载后将在单个会话中多次调用它,而不是在每次调用时都必须重新加载的脚本文件(据我了解) ,无论如何)。

Ada*_*ski 1

测试这两个问题的脚本:

(get-date).TimeOfDay.ToString()
Start-Sleep -Milliseconds 100

DATA dat -supportedCommand Get-Date {
  get-date
}
Start-Sleep -Milliseconds 100

(get-date).TimeOfDay.ToString()
Start-Sleep -Milliseconds 100

$dat.TimeOfDay.ToString()
Run Code Online (Sandbox Code Playgroud)

结果(请注意,第二行的时间是最晚的):

12:21:23.3191254
12:21:23.5393705
12:21:23.4306211
Run Code Online (Sandbox Code Playgroud)

结论是:

  • 数据段评估立即执行,不延迟
  • 数据部分仅评估一次,而不是每次使用时评估

如果我们能够控制这些机制,数据部分会更有用。例如,仅在需要时读取大型文本文件或在每次访问时刷新变量。