内联函数调用,其中表达式是预期的

时间:2016-02-26 22:48:12

标签: powershell

在powershell中,我试图这样做:

$binRoot =  ($path, Get-BinPath)[$path -eq $null]

这里,Get-BinPath是前面定义的函数。我在这一行上收到错误,上面写着:

At C:\repos\hub\test.ps1:12 char:20
+ $binRoot =  ($path, Get-BinPath)[$path -eq $null]
+                    ~
Missing expression after ','.
At C:\repos\hub\test.ps1:12 char:21
+ $binRoot =  ($path, Get-BinPath)[$path -eq $null]
+                     ~~~~~~~~~~~
Unexpected token 'Get-BinPath' in expression or statement.

我可以通过将工作分成两个语句并引入一个临时变量来解决这个问题 - 但是在一行中完成它会很好。即使这是一个糟糕的礼仪,我仍然只是想知道如何做到这一点。

2 个答案:

答案 0 :(得分:1)

Get-BinPath放在括号中;这会导致函数被计算为表达式,即好像是单独调用它一样:

$binRoot =  ($path, (Get-BinPath))[$path -eq $null]

答案 1 :(得分:1)

$binRoot = if ($path -ne $null) {$path} else {Get-BinPath}

几个字符更长。然而,不那么神秘,更容易阅读(理解,维护等)。