Можно ли написать каждую функцию как «чистую функцию» в Google Apps Script? - PullRequest
0 голосов
/ 20 апреля 2020

Меня интересует функциональное программирование , поэтому я решил попробовать этот подход в среде сценариев моего Google Sheets файла, и вы знаете, что язык сценариев Google Apps Script , который в основном javascript. И он даже поддерживает некоторый (если не весь) синтаксис ES6.

Проблема в том, что я не могу напрямую запустить какой-либо код, например:

let a = 4;
Logger.log(a);

Я имею в виду, я не могу запустить его глобально Мне нужно определить функцию с любым именем, а затем поместить код в эту функцию, и я могу запустить функцию, чтобы функция запускала код внутри.

Итак, возможно, вы спросите: «почему это поведение создает проблемы при написании чистого функционального кода? " ну, потому что, как я знаю, два самых важных фактора о чистых функциях:

1) Мы не должны использовать глобальные переменные / функции внутри функции, вместо этого мы должны передавать в качестве параметров (и тогда в качестве аргументов, конечно).

2) определение функции внутри функции часто не очень хорошая идея с точки зрения читабельности и организации кода.

Итак, я хочу определить больше функций (для выполнения каких-то задач), а не только одну «основную» функцию, и я не смог найти никакого способа, какого-либо единственного способа написания кода (в целом) без нарушения хотя бы одной из два утверждения выше.

Итак, я имею в виду, я не могу ничего написать, не выполнив хотя бы одну не чистую функцию.

1 Ответ

2 голосов
/ 20 апреля 2020

Как пояснил пользователь в комментариях:

Ваше первое предположение частично неверно. Функция не должна зависеть от глобальных, изменяемых переменных, но она может зависеть от глобальных констант и глобальных чистых функций. Однако часто вы предпочитаете передать зависимость функции в качестве аргумента, чтобы получить более общую функцию более высокого порядка. Ваше второе предположение основано исключительно на мнениях.

Таким образом, вы можете, например, определить основную функцию для запуска вашего кода в целом, одновременно определяя функции внутри основной функции для достижения функционального программирования с помощью Apps Script.

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