Недавно я прошел обучение в Powershell и узнал, что вы обычно не можете возвращать простые типы данных из сложных функций powershell, создавая стандартный синтаксис вызова функции в X = Foo (Bar (Hello («World»))) невозможно/практический. Решение PowerShell должно использовать трубопровод, как в x = Hello «World» | Бар | Foo. Мне было интересно узнать о практических последствиях этой синтаксической разницы. Неужели мы теряем любые полезные языковые конструкции, не выполняя вложенные вызовы функций?Трубы против вложенных функциональных вызовов
0
A
ответ
0
Вы все еще можете использовать вложенные функции в Powershell. Вы просто не называете их, используя тот же синтаксис, которым вы привыкли:
Function Foo { "$($args[0])!" }
Function Bar { $args[0].ToUpper() }
Function Hello { "Hello $($args[0])" }
Foo (Bar (Hello "World"))
HELLO WORLD!
Смежные вопросы
- 1. Избегание нескольких функциональных вызовов?
- 2. Обфусканный код без функциональных вызовов
- 3. Тестирование модулей против функциональных тестов
- 4. Производительность вложенных запросов в MySQL против нескольких вызовов. (PHP)
- 5. очистки вложенных вызовов функций
- 6. RXJava обработка вложенных вызовов
- 7. Отражение вложенных вызовов метода
- 8. упрощение вложенных обратных вызовов
- 9. частные функции против вложенных функций
- 10. Observer против обратных вызовов
- 11. Наблюдатели против обратных вызовов
- 12. Простые против вложенных
- 13. Плоские против вложенных API
- 14. "Обычная" функция против функциональных переменных в JavaScript
- 15. Как избежать вложенных вызовов Collection.stream()?
- 16. Результаты совпадения вложенных вызовов ajax
- 17. JSF: избегайте вложенных вызовов обновления
- 18. DSL против вызовов методов: за и против
- 19. C# - Лямбда против вложенных циклов
- 20. Вложенные представления против вложенных состояний
- 21. Число вызовов лямбда при вызове много вложенных вызовов выполнено
- 22. C Получить номер функциональной строки из 2-х функциональных вызовов
- 23. кэша с помощью функциональных обратных вызовов/прокси-модель реализации SCALA
- 24. Vim: Как использовать результаты функциональных вызовов в: оперативные команды
- 25. R: Идентификация имен векторов и данных из функциональных вызовов
- 26. Шаблон Java для вложенных обратных вызовов?
- 27. Выход из серии вложенных обратных вызовов
- 28. NodeJs - серия вложенных API вызовов асинхронно
- 29. Оценка вложенных вызовов свойств из строки
- 30. избегая вложенных обратных вызовов с обещаниями
Да, но что вы переходите в Bar и Foo? Объект, созданный powershell, содержащий все значения, возвращаемые из любых вызовов функций, выполненных в предыдущей функции. Эти объекты будут отличаться по своей природе от реализации до реализации. Foo не всегда получает объект, созданный Bar, так как вы можете с уверенностью ссылаться на него? –
Это ничем не отличается от передачи аргументов любой функции. Функция будет спроектирована так, чтобы ожидать определенного типа объекта для ввода. Если он получает тип ввода, для которого он не предназначен, он будет выдавать ошибку. Конвейер свяжет одно свойство объекта с параметром для вас. Если вы передадите объект в качестве параметра, вам нужно будет явно ссылаться на это свойство в функции, но это не запрещает вызовы функций вложенности. – mjolinor
Ваши функции просты, они состоят из одной строки и не выполняют никаких других вызовов функций. Я специально думаю о более сложных функциях, которые они сами выполняют множество вызовов функций, но в конечном итоге должны возвращать простой тип данных. –