我可以有一个包含在运行时评估的委托的字符串吗?

Can I have a string containing a delegate that is evaluated at runtime?

我能否拥有一个包含委托的字符串,该委托会在运行时的不同时间展开?

$pattern = "(?m)^INFO\:(?:\s|\t)*$({script:$marker})\:(?:\s|\t)*(?<url>.*)$"
$marker = "Some marker value"
:
#Do something with the resulting pattern containing the marker value
:
$marker = "Some other marker value"
:
#Do something with the pattern having the new marker value

等等...我宁愿不必继续重新定义字符串...或拥有构建它的函数。如果我可以在需要字符串时而不是在设置 $pattern 值时对字符串中的几个字符进行求值,这似乎更加简洁。

你可以做到

$pattern = {"(?m)^INFO\:(?:\s|\t)*($script:marker)\:(?:\s|\t)*(?<url>.*)$"}

然后稍后使用

$pattern.invoke()

(假设您希望 $script:marker 成为稍后设置的字符,您的原始示例有 $({script:$marker}),但如果它应该执行我的操作,那将不起作用认为应该 ;))

通常:使用 {} 将术语定义为 Scriptblock,然后使用 .invoke() 对其求值。

只要确保大括号内的类型没有混淆,否则你可能会得到一些奇怪的结果...