默认值为null值

22 浏览
0 Comments

默认值为null值

在我的Powershell脚本中,我有几个地方想要A,除非它是null,否则B。本质上就是C#中的??运算符。我最终写了下面所示的函数,但我无法不去想是否有一种内置的方法来实现这个。

有更好的内置方法吗?

function Get-ValueOrDefault()
{
    foreach ($value in $args)
    {
        if ($value -ne $null) { return $value }
    }
}

我认为这样更好:

function Get-ValueOrDefault() { $args | select -first 1 }

0
0 Comments

在PowerShell Community Extensions中,提供了一个名为Invoke-NullCoalescing的函数,用于处理空值的默认值。这个函数的作用类似于C#中的??运算符,用于判断一个值是否为空,如果为空则返回一个默认值。

函数的参数如下:

- PrimaryExpr:用于判断条件的脚本块,如果条件为真,则返回TrueBlock中的内容。

- AlternateExpr:如果条件为假,则返回AlternateExpr中的内容。

函数的实现如下:

- 首先判断PrimaryExpr是否为空,如果不为空,则执行PrimaryExpr并将结果赋给$result。

- 如果$result不为空且不为"",则返回$result。

- 否则,执行AlternateExpr并返回其结果。

通过New-Alias命令,我们可以将Invoke-NullCoalescing命令别名为??,使得使用起来更加方便。

在例子中,我们可以看到通过??命令来处理空值的默认值。例如,$xyzzy变量为空时,返回"empty";$psversiontable变量不为空时,返回变量的内容。

然而,PSCX并没有提供其他处理空值的默认值的方法。如果想要实现类似的功能,需要自定义函数来处理。在PowerShell的反馈中,也有建议添加一个三元运算符(bool_expr ? true_expr : false_expr)来处理空值的默认值,可以在connect.microsoft.com/PowerShell/feedback/details/53059/...进行投票。

,PSCX提供了一个Invoke-NullCoalescing函数来处理空值的默认值,但是需要自定义函数来实现更多功能。而且目前PowerShell本身并没有内置的处理空值的默认值的方法,需要通过自定义函数或者投票来实现。

0