|
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 20
|
|||||||||||||||||||||
Странная работа скрипта с функциями и возвращаемыми значениями16.12.2016, 12:26. Показов 3048. Ответов 4
Метки нет (Все метки)
Я абсолютный новичок в PowerShell (не считая вызова простейших команд типа управления exchange), но вроде более-менее знаком с 5-6 другими языками программирования и скриптовыми.
Сейчас пробую элементарнейшее создание своей функции и ее вызов, получаю абсолютно абсурдное поведение:
- в момент присваивания $a=func, собственно func не вызывается! - func вызывается в момент обращения к переменной, которой присвоено возвращаемое значение - во время сравнения ($a -eq 1) - вызов не происходит, так же, как и во время прибавления $c=$a+1 - при выводе $c опять вызывается func! Более того, если я закомментирую вызов echo:
- сначала func просто не отрабатывает, но 1 каким-то непостижимым образом при этом возвращает! - далее все аналогично, функция отрабатывает именно при выводе $c, которая связана с вызываемой функцией аж через 2 ступеньки. Когда сначала было присвоено $a, потом из $a было по формуле посчитано $c... Вопрос: что это вообще за издевательство и как с этим всем работать? Прощу прощения за излишнюю эмоциональность, но вроде, в программировании не первый десяток лет, но с таким поведением языка сталкиваюсь впервые.
0
|
|||||||||||||||||||||
| 16.12.2016, 12:26 | |
|
Ответы с готовыми решениями:
4
класс с 2 возвращаемыми значениями
Работа с функциями. Написать программу, которая будет с отрицательными(положительными) значениями вычислять функцию по следующей формуле |
|
|
|||||||
| 16.12.2016, 14:24 | |||||||
|
Немножко беглое объяснение:
Добавлено через 23 минуты PS: Ваша ошибка в том, что вы не учли разницу между двумя командлетами: Write-Output\echo - предназначен для передачи значения по pipeline (если есть куда передавать, иначе записывает в stdout) и поэтому он возвращает значение, а Write-Host просто записывает значение в stdout и ничего не возвращает.
1
|
|||||||
|
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 20
|
|
| 16.12.2016, 16:32 [ТС] | |
|
Большое спасибо!
Хороший метод gettype(), приму на вооружение. Значит, получается, если функция пишет что-то в pipeline, то оно записывается в массив, который при return дополняется последним параметром этого самого return, и этот массив возвращается, так? В голову не могло придти, что такая подстава окажется с обычнейшей функцией echo, теперь почитал, буду знать. Сейчас заменил все echo на Write-Host - заработало как надо! А если я вместо echo буду из своей функции вызывать другие команды/функции? Надо по каждой смотреть, куда она возвращает результат и не будет ли на выходе "сюрприза" в виде массива вместо ожидаемого значения? Нагуглил, как поместить результаты вывода команды в массив для дальнейшей с ним работы, получилось: $r=@(Get-MailboxExportRequest) Вроде, выходной pipeline ничем не забивается, я правильно делаю? Сюрпризов не будет? А можно еще тут же другой вопрос не по теме? Про обработку ошибок? Написал: return True (Вместо return "True"), оно ругнулось, что мол, синтаксис неправильный и... продолжило выполнение, нарушив логику скрипта. Можно как-то поменять механизм обработки ошибок, чтобы оно грохалось в случае таких ошибок? А лучше всего, вообще не запускалось сразу...
0
|
|
|
|
||||||||||||||
| 16.12.2016, 17:47 | ||||||||||||||
|
iltmpz,
Ваш вариант с
NB: В powershell само использование return необязательно для возврата значений; результат последнего вычисленного выражения и так будет неявным возвращаемым значением функции. Но если таких значений окажется несколько - то возвращаемым результатом станет массив этих значений. if ($var -ne $null) или if (!$var) (второй способ, как пишут, надежнее), а потом уже на требуемый тип.PS: По прочим вопросам в части обработки ошибок и т.д. лучше создать отдельную тему, где вам обязательно ответят. Добавлено через 10 минут Про возврат значений из пользовательских функции вот здесь более подробно написано.
1
|
||||||||||||||
|
|
||
| 16.12.2016, 17:55 | ||
|
iltmpz,
http://windowsnotes.ru/powersh... l-chast-1/ http://windowsnotes.ru/powersh... l-chast-2/
1
|
||
| 16.12.2016, 17:55 | |
|
Помогаю со студенческими работами здесь
5
Метод с различными возвращаемыми типами Странная работа Wi-Fi Странная работа ПК
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|