Путаница по поводу преобразования типов - PullRequest
0 голосов
/ 03 мая 2019

Я написал функцию, которая вычисляет факториал. Попытка убедиться, что он выдает ошибку, когда входное значение не является целым числом, но PowerShell автоматически преобразует входные данные. Есть ли способ убедиться, что нецелые числа перехвачены и отображается ошибка.

function Get-Factorial ([int]$x) {
    if ($x -isnot [system.int32]) {
        return "error"
    }
    if ($x -eq 0) {
        return 1
    }
    return $x * (Get-Factorial($x - 1))
}

1 Ответ

0 голосов
/ 03 мая 2019

Конечно, не говорите Powershell, что вы хотели бы [int] в качестве первого параметра

function Get-Factorial ($x) {
    if($x -isnot [system.int32]){
       throw [System.ArgumentException]
    }
    if ($x -eq 0) {
        return 1
    }
             return $x * (Get-Factorial($x - 1))
}

PS C:\Users\jos> Get-Factorial -x 1.1 
System.ArgumentException
At line:1 char:1
+ throw [System.ArgumentException]
…
# or 
PS C:\Users\jos> Get-Factorial 1.1 
System.ArgumentException
At line:1 char:1
+ throw [System.ArgumentException]
...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...