Застрял при вызове скрипта, который вызывает функцию пользовательского класса - PullRequest
0 голосов
/ 09 октября 2019

У меня есть пользовательский класс C с 2 функциями fun1 и fun2. fun2 звонки fun1. Я создаю экземпляр класса C, передаю его в скрипт $s и вызываю скрипт. Если скрипт $s просто вызывает fun1, все работает нормально, и я получаю ожидаемый результат 'something'. Однако, если скрипт $s вызывает fun2, скрипт продолжит работу и никогда не завершится. Почему он застрял? Ниже приведен код. Моя версия powershell 5.1.

class C{
    [object]fun1(){
        return 'something'
    }
    [object]fun2(){
        return $this.fun1()
    }
}

$s = {
    param($p)
    $p.fun2() # the script won't stuck if this line is changed to $p.fun1()
}

[powershell]::Create().AddScript($s).AddParameters(@{ p = [C]::new() }).Invoke()

Я попытался вызвать скрипт $s, используя & $s -p ([C]::new()), и он работает нормально. Но я хочу понять, почему при вызове сценария [powershell]::Create() все по-другому.

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