测试功能空返回值

时间:2014-11-11 12:40:24

标签: powershell null

(编辑) 一个空函数实际上确实返回一个null,有些东西让我误入歧途,把问题留在这里作为提醒......

$ null不会削减它。我的场景最简单的解释为一个片段,我有一个人写的函数

function PositiveInt([string]$value) { 
    if ([int]($value) -ge 0) {[int]$value}
}

如果输入不是数字字符串,则在否定情况下不返回任何内容或抛出。如何在否定的情况下测试回报?我试过这个

if ($null -eq (PositiveInt -1)) {
    write-host "not positive :)"
}

但它显然不起作用,因为没有返回值不等于$ null。如何测试函数或表达式是否根本不返回任何内容?不要尝试修复我的设法功能,它缺少“$ empty”(原文如此)我想做一个测试,但不能因为powershell绑定不强制函数甚至表达式实际上都返回任何东西?

# hacky unclear solution proposed
$temp = @(PositiveInt -1)
if ($temp.length -eq 0) {
    write-host "not positive :)"
}

我从这篇In Powershell what is the idiomatic way of converting a string to an int?帖子中汲取了一些灵感。但是我相信我会问一个不同的问题。 除了转换到数组解决方法之外,还有更简洁的方法吗?

(编辑) 必须承认环境或实际代码上下文正在发挥作用,在PS 5.1中,函数调用返回$ null,因为@AnsgarWiechers指出。

3 个答案:

答案 0 :(得分:2)

您可以使用-is or -isnot type operators检查结果是否成功转换为整数:

if( (PositiveInt '-1') -isnot [int] ) {
  write-host 'negative'
}

答案 1 :(得分:1)

您可以尝试以下方法:

if ((PositiveInt -1) -eq $null) {
    write-host "not positive :)"
}

答案 2 :(得分:0)

你喜欢这个吗?

if ( [string]::IsNullOrEmpty( (PositiveInt -1) ) ) {
    write-host "not positive :)"
}
相关问题