Когда PowerShell разрабатывался, команда хотела сделать его простым в использовании.Но это сбивало с толку людей, которые знают return
с других языков.Реализация в классах - это попытка исправить эту ошибку.
Ключевое слово return
работает совершенно по-разному в методах классов PowerShell.Он работает как операторы return
на других языках.
В методе класса ключевое слово return
:
- Выход из текущей области.
- Возвращаетсвязанный объект (return).
- Возвращает только связанный объект.
- Объект, который возвращает Return, должен соответствовать типу возврата метода.
Этосоответствует ключевому слову return
и аналогичным ключевым словам на других языках.
class ClassMyFunc
{
[string] MyFunc
{
$res1 = new-object System.Text.StringBuilder
$res1.Append("titi")
$res2 = "toto"
return $res2
}
}
$cmf = New-Object -TypeName ClassMyFunc
$cmf.MyFunc()
Вывод: toto
, как и ожидалось.Использование классов решило мою проблему, без необходимости искать все функции, возвращающие значение в консоли и передающие его в Out-Null
(как предложено @ TobyU ).