我可以有一个包含在运行时评估的委托的字符串吗?
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() 对其求值。
只要确保大括号内的类型没有混淆,否则你可能会得到一些奇怪的结果...
我能否拥有一个包含委托的字符串,该委托会在运行时的不同时间展开?
$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() 对其求值。
只要确保大括号内的类型没有混淆,否则你可能会得到一些奇怪的结果...