繁体   English   中英

如何在 PowerShell Method-Chaining 中使用换行符

[英]How to use line breaks in PowerShell Method-Chaining

我正在尝试使用以 fluent-api 模式编写的重试服务。 这些方法返回服务并允许方法链接。 然而,即使我正在使用 --> ` <-- 我也看到了很多错误,如下所示。 在此处输入图像描述

是否有任何解决方法或其他可能性不将所有内容写入一行? (我已经检查了方法名称和返回类型)

(重试服务的入口点) 在此处输入图像描述

不幸的是, about_Methods似乎没有对方法链及其解析规则进行澄清。 如果你想在新行上链接多个方法,点. 必须在每个语句的末尾,然后允许换行。 不需要反引号

例如:

[powershell]::Create().
    AddScript({ "hello $args" }).
    AddArgument('world').
    Invoke()

链接方法调用的另一种方法是使用ForEach-Object命令(别名% )。 这依赖于使用-MemberName参数设置的参数(通过将字符串作为第一个参数隐式传递)。

PowerShell 7+甚至可以让您编写 pipe 符号| 在新的一行:

[powershell]::Create()
    |% AddScript { "hello $args" }
    |% AddArgument 'world'
    |% Invoke

如果有多个方法arguments,则必须用,分隔(不需要括号)。

对于PS 5 及以下版本,您必须使用略有不同的语法,因为 pipe 符号必须与上一个命令位于同一行:

[powershell]::Create() |
    % AddScript { "hello $args" } |
    % AddArgument 'world' |
    % Invoke

这是比使用成员访问运算符更好的方法吗. 我不这么认为,这只是一种不同的方式。 IMO 与常规 PowerShell 命令相比,它看起来确实更一致。 性能可能比. 但对于高级代码,它可能无关紧要(我没有测量过)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM