-1

我对函数式编程很感兴趣,所以我决定在我的Google Sheets文件的脚本环境中尝试这种方法,你知道脚本语言是Google Apps Script,它基本上是javascript。它甚至支持一些(如果不是全部)ES6 语法。

问题是我不能直接运行任何代码,例如:

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

我的意思是,我不能全局运行它,我需要定义一个任何名称的函数,然后将代码放在那个函数里面,我可以运行这个函数,所以函数运行里面的代码。

所以,也许你会问,“为什么这种行为会导致编写纯函数式代码出现问题?” 好吧,因为据我所知,关于纯函数的两个最重要的因素是:

1)我们不能在函数内部使用全局变量/函数,而是必须作为参数传递(当然,然后作为参数)。

2) 就代码的可读性和组织而言,在函数内部定义函数通常不是一个好主意。

所以,我想定义更多函数(做一些事情),而不仅仅是一个“主要”函数,而且我找不到任何方法,任何单一的方法来编写代码(作为一个整体)而不违反两者中的至少一个上面的陈述。

所以,我的意思是,如果不创建至少一个非纯函数,我就不能写任何东西。

4

1 回答 1

1

正如用户在评论中解释的那样:

您的第一个假设部分不正确。函数不能依赖于全局的可变变量,但它可以依赖于全局常量和全局纯函数。但是,您通常更愿意将函数依赖项作为参数传递,以获得更通用的高阶函数。您的第二个假设仅基于意见。

因此,例如,您可以定义一个 main 函数来作为一个整体运行您的代码,同时在 main 函数中定义函数以使用 Apps Script 实现函数式编程。

于 2020-04-20T14:19:44.463 回答