YuS_2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Smitis Цитата: Переменная $_ существует везде, а вот значение может приобретать разное и неявно. | Это утверждение также требует практического подкрепления... Чем определяется глобальность переменной? Вот из этого надо исходить. Мы не можем её вызвать где захочется, только в определенном месте кода, и только в текущем значении, как только выходим из этого определенного места, переменная уничтожается, а это говорит, как раз о её локальной области действия. "$_ - Same as $PSItem. Contains the current object in the pipeline object. You can use this variable in commands that perform an action on every object or on selected objects in a pipeline." И это, действительно так. Проверяется легко, поэтому примеры приводить не вижу смысла. Цитата: В PS переменная $_ видна везде, но вот какое значение она имеет в данный конкретный момент, зависит от контекста. | Ну не так ведь... это автоматическая переменная, которая возникает и принимает значение только текущего объекта и только в текущем конвейере... далее она уничтожается... или требуется пример опровергающий это. До сих пор, лично мне, такого не попадалось. Для проверки, можно выполнить: Код: get-variable -scope global | Цитата: А дальше стараниями разработчиков концепция использования объектов в потоке отправляется в пешее эротическое путешествие так как Path и LiteralPath имеют тип string и принимают значения из объекта именно как ByPropertyName. | Просто рассуждения: Так чем это чревато? Да, согласен, что при передаче по конвейеру изменение типов может приводить к всякого рода неожиданностям... но, может быть, это просто надо учитывать при составлении кода? Цитата: Но вот в собственных функциях Вы ВНЕЗАПНО можете получить в параметры совсем не то, что ожидали. | Пример? Вообще, как и в любом языке, здесь, возможно, просто необходимо соблюдать синтаксис? Просто так, напрямую экстраполировать поведение переменных, конвейеров, функций и прочих конструкций из других языков на powershell, не совсем корректно... я бы даже сказал, в некоторых случаях, совсем некорректно. Цитата: неявная передача параметра это потенциальный источник ошибок так как пользователь не видит и не контролирует этот процесс. | Ну почему же? Пользователю, возможно и не требуется этот контроль... требуется, всего лишь, при необходимости, в любом месте конвейера получать требуемые свойства объекта или совершать над ним необходимые действия... Гипотетически, любой код может быть источником потенциальных ошибок, а иначе, уже давно какой-нибудь язык признали бы идеальным и пользовались бы только им, а не плодили лишние сущности (бритвы на них нет соответствующей) А вообще, надо нам всем при составлении кода не забывать перечитывать справку, чтобы исключать возможные ошибки... Например, about_Scopes (это просто пример) - много познавательного и освежающего память, обнаруживаю каждый раз... | Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:35 17-11-2018 | Исправлено: YuS_2, 08:04 18-11-2018 |
|