функция powershell + словарь - PullRequest
0 голосов
/ 26 апреля 2018

Я не понимаю это поведение:

function foo ($item, $dict_of_item) {
    if ($dict_of_item.keys -contains $item){
        return $dict_of_item[$item] }
    else{
        return $item }       
}

$dict = @{
'a' = 1
'b' = 2
'c' = 3}

foo('a',$dict)
a

Name                           Value                                                                                                                                                                                                                             
----                           -----                                                                                                                                                                                                                             
c                              3                                                                                                                                                                                                                                 
b                              2                                                                                                                                                                                                                                 
a                              1          

Мне нужен код возврата символа, и я не понимаю, почему я получаю словарь в выводе.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы вызываете функцию неправильно. Вы не ставите круглые скобки вокруг аргументов, но передаете их как аргументы командной строки. Так что в вашем случае измените:

foo('a',$dict)

до:

foo 'a' $dict

или, более четко:

foo -item 'a' -dict_of_item $dict

PowerShell интерпретировал ('a',$dict) как массив, и вы получили:

$item = ('a',$dict)
$dict_of_item = $null

Поскольку ваш тест не пройден с этими аргументами, он возвращает $item вам. То есть он возвращает массив с символом и словарем, который вы видите на экране.

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